メソッドとは特定のクラスに関連づけられたサブルーチン
package Klass; sub method { #処理 }
パッケージの中にサブルーチンを書くだけで,パッケージに関連付けられる.
$obj_refが先ほどのKlassオブジェクトへのリファレンスである場合,そのオブジェクトのKlass::methodを呼び出すには「アロー」を用いてこう書く.
package main; $obj_ref->method('arg');
これは$hash_ref->{'key'}のような要素の参照と同じ.対象がメソッドになっただけ.
アローを用いたメソッド呼び出しをした場合,サブルーチンは下記のように呼び出されたのと同じこと
Klass::method($obj_ref, 'arg')
このようにメソッドは第1引数にオブジェクトのリファレンスをセットする.
下記のようにすれば$selfとして,オブジェクトのリファレンスを受け取れる.
package Klass; sub method { my ($self, @args) = @_; #処理 }
Perlにおいてはメソッド内でオブジェクトのリファレンスを使うのに,プログラマ自ら$selfをコンテキストとして設定する必要がある,ということ.
ちなみに中身はともかくこのオブジェクト(レシーバとかいう)を,C++/Javaではthis,Rubyではselfに自動的に設定します.また,PythonではPerlと同じように第1引数で受け取ります.
アロー構文?アロー演算子?アロー記法
同じ説明の部分で違う言葉が使われている.ホントは原著に当たるべきなんだろうけど.
arrow notation, arrow syntax, arrow operator
ふーむ.バラバラだ
あえて「矢印」「アロー」か?