Higher-Order Perl
hash,arrayのほかにクロージャもblessできる。
Perl のオブジェクトを作るときは、まず組み込みのデータ型から適当なものを選びます。普通はハッシュを使うことが多いと思いますが、配列やクロージャ(無名サブルーチン)もオブジェクトに出来ます。
Higher-order Perl: A Guide To Program Transformation
Mark Jason Dominus
Morgan Kaufmann Pub / ¥ 7,625 (2005-05-30)
通常24時間以内に発送
Mark Jason Dominus
Morgan Kaufmann Pub / ¥ 7,625 (2005-05-30)
通常24時間以内に発送
いくつかのアクションを持つイテレータを用意したとき
$it->('next');
とか書かないといけないところを
sub Iter::next {$_[0]->('next')}
というような関数を用意する。更に、イテレータを受け取ってblessして返す関数を適用。
sub Iterator (&) { bless $_[0] => 'Iter'}
そうすると、
$it->next
というようなメソッド風呼び出しが行え、一種の構文糖衣的な使い方と考えておけばよいのだろう。