./?Perl/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91/Class-Accessor-Fast
- 追加された行はこの色です。
- 削除された行はこの色です。
- Perl/オブジェクト指向/Class-Accessor-Fast へ行く。
- Perl/オブジェクト指向/Class-Accessor-Fast の差分を削除
* Class::Accessor::Fastを使ってアクセサを作る [#nc099cf8] Class::Accessor::Fastはクラスにアクセサを提供するモジュール。 package MyClass; use base qw/Class::Accessor::Fast/; __PACKAGE__->mk_accessors(qw/name address/); #!/usr/local/bin/perl my $obj = MyClass->new( { name => 'taro', address => 'tokyo'} ); print $obj->name, "\n"; # taro $obj->name('jiro'); print $obj->name, "\n"; # jiro - $obj->name('jiro')は、$obj->set('name','saburo')でも良い。 - Class::Accessor::Fastはnew()を提供するので、自分でnew()を書く必要はないが、sub new { $self = shift->SUPER::new(@_); $self->name('default'); return $self } や sub new { $self = bless {}, shift; $self->name('default'); return $self; }のように自分で書いても良い。 - Class::Accessor::Fastはnew()を提供するので、自分でnew()を書く必要はないが、 sub new { $self = shift->SUPER::new(@_); $self->name('default'); return $self } あるいは sub new { $self = bless {}, shift; $self->name('default'); return $self; } のように自分で書いても良い。 - また、$obj2 = $obj->new() のようなnew()によるインスタンス生成も可能。 ** 参考 [#e387153b] http://search.cpan.org/perldoc?Class::Accessor