Ich versuche, Moose reader
und writer
für die Einstellung und einen Wert zu verwenden. Fehler für Reader und Writer Accessor-Methode von Moose in Perl
Das folgende ist employee.pm
:
package employee;
use Moose;
has 'firstName' => (is => 'ro' , isa => 'Str' , required => 1);
has 'salary' => (is => 'rw',
isa => 'Str',
writer => 'set_slalary',
reader => 'get_salary',
);
has 'department' => (is => 'rw' , default => 'support');
has 'age' => (is => 'ro' , isa=> 'Str');
no Moose;
__PACKAGE__->meta->make_immutable;
1;
Das folgende ist mein Skript 1.pl
(die die oben Modul verwendet):
use employee;
use strict;
use warnings;
my $emp = employee->new(firstName => 'Tom' , salary => 50000 , department => 'R&D' , age => '27');
$emp->set_salary(100000);
print $emp->firstName, " works in ", $emp->department, " and his salary is ", $emp->get_salary() , " and age is ", $emp->age ,"\n" ;
Im Skript Ich versuche, das salary
Attribut zu aktualisieren zu 100000
. Ich erhalte die folgende Fehlermeldung:
Can't locate object method "set_salary" via package "employee" at 1.pl line 7
Wenn ich die Linie $emp->set_salary(100000);
in 1.pl
kommentieren, dann bekomme ich eine korrekte Ausgabe (ohne den aktualisierten Wert für das Attribut salary
, natürlich).
Tom works in R&D and his salary is 50000 and age is 27
In employee.pm
habe ich gegebene Lese- und Schreibberechtigung für salary
Attribut. Kann jemand vorschlagen, wo ich falsch liege? Danke im Voraus.
Lassen Sie uns [diese Diskussion im Chat fortsetzen] (http://chat.stackoverflow.com/rooms/159833/discussion-between-hobbs-and-ikegami). – hobbs
Sie vermuten, dass ein "automatischer" Methodengenerator existiert. So funktioniert Elch nicht! Bitte lesen Sie die Dokumentation! https://www.google.com.br/search?q=metacpan+%2B+Moose&oq=metacpan+%2B+Moose&aqs=chrome..69i57j69i64.3064j0j7&sourceid=chrome&ie=UTF-8 –