./?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