Perlのオブジェクト指向を補助するモジュールその3 Class::Accessor::Lite
Perlのオブジェクト指向はハッシュにアクセスするためのアクセサーをいちいち書かないといけないとかで、ちょっと面倒だったりします。だったらCPANモジュールでなんとかすればいいよね、ということでそれらの不満を解消するための、オブジェクト指向を補助するモジュールがたくさんリリースされているらしいです。
その1つが、Class::Accessor::Liteです。僕は今、Mooというモジュールでスクリプトを書いていたのですが、それよりはだいぶシンプルな機能を提供するようです。覚えることが少なくて済みそうで助かりますね。
さっそく適当にスクリプトを書いてみました。
package PackageName { use v5.16; use warnings; use utf8; use Class::Accessor::Lite ( new => 1, rw => [qw(foo bar)], ); sub name { my $self = shift @_; return join "\t", @_; } 1; } package main { use v5.16; use warnings; use utf8; use open IO => qw/:utf8 :std/; use autodie; use Test::More tests => 4; my $new = PackageName->new({ foo => 'Sawada', bar => 'Takehiro', }); isa_ok($new, 'PackageName', 'isa check'); is($new->foo, 'Sawada', 'foo method check'); is($new->bar, 'Takehiro', 'bar method check'); is($new->name(qw/deep sleep time/), 'deep sleep times', 'name method check'); }
実行させた結果はこんな感じになります。
1..4 # Failed test 'name method check' # at sample.pl line 35. # got: 'deep sleep time' # expected: 'deep sleep times' # Looks like you failed 1 test of 4. ok 1 - isa check isa PackageName ok 2 - foo method check ok 3 - bar method check not ok 4 - name method check
これは……適当に書けていいですね。