warnings qw/exper im ental::class/; class User { field $name :param; field $email :param; method get_name { return $name; } } ಋೖ 1FSM ͍ΘΏΔී௨ͬΆ͍DMBTTߏจ fi FMENFUIPEαϙʔτ ͝ཡͷͱ͓ΓFYQFSJNFOUBM
ΞΫηαࣗಈͰੜ͑ͯ͘Δ ίΞϞδϡʔϧ package User; use Class::Struct; struct(User => { name => '$', email => '$', }); # ͜Μͳײ͡Ͱ͑Δ my $user = User->ne w ( name => 'john', email => '[email protected]', ); say $user->name; # john $user->name('doe'); say $user->name; # doe
$MBTT"DDFTTPS'BTU $MBTT"DDFTTPS'BTUFS $MBTT"DDFTTPS-JUF package User; use base q w (Class::Accessor); User->follo w_ best_practice; User->mk_accessors(q w (name email)); # ͜͏͍͏;͏ʹ͑Δ my $user = User->ne w ({ name => 'john', email => '[email protected]', }); say $user->{name}; # john $user->set('name', 'doe'); # getterΛհͯ͠ΞΫηεͰ͖Δ say $user->get('name'); # doe
ͷΞΠσΞΛഈआ .01ίϯηϓτ package User; use Moose; has 'name' => (is => 'rw', isa => 'Str'); has 'email' => (is => 'rw', isa => 'Str'); sub greet { my $self = shift; return "hello, ". $ self->name; } # ͜͏͍͏;͏ʹ͑Δ my $user = User->ne w ({ name => 'john', email => '[email protected]', }); say $user->name; # john $user->name('doe'); say $user->name; # doe say $user->greet; # hello, doe