はこべブログを読み、僕もボーリングゲームをしました
Perlでオブジェク指向になれてないので、いい機会だから ボーリングゲームを実装してみました。 http://hakobe932.hatenablog.com/entry/2014/04/05/153232
私の実装はこんな感じです。テストケースはそのまま使い とりあえずテストは通った。 https://github.com/dokechin/coding-kata-bowling
ゲーム終了の判定とかしてないけれど・・・
Class::Accessor::Liteの使い方
さて、今回学んだことはClass::Accessor::Lite new=>0で使うときの使いk方です。(結構情報がなかった、おろらく一般常識なのかも。 いやいや初心者はたぶんハマるはず?!) new=>1としてしまうと、いろいろ初期化したいロジックをかけないので0で使いますよね。 さて、その時どうするんだというお話
sub new { my $klass = shift; my $obj = bless { (@_ == 1 && ref($_[0]) eq 'HASH' ? %{$_[0]} : @_), }, $klass; # ここで、$objをいろいろと操作する return $obj; }
はい。これだけです。 blessのコードはおじさん、覚えられなくて、いつも露頭に迷うんですが、 Class::Accessor::Liteの中からソースを引っ張ってくれば良くて。 これなら忘れっぽいおじさんにも優しいです。
ボウリング大好きの@dokechinでした。
__mk_newを利用できないか?
sub new { my $pkg = shift; my $new = __mk_new ($pkg); my $obj = $new->($pkg, _@); # ここで、$objをいろいろと操作する return $obj; }
実行時に__mk_newがないとエラーになってしまった。