メソッド呼び出し時の::と->の違い
Package::Hogeというパッケージがあって、そこで定義されているhugaメソッドがあるとします。
これを呼び出すときに、
Package::Hoge::huga(@args)
と書くのと、
Pakage::Hoge->huga(@args)
と書くのでは動作が異なります。
同じだと思ってました。
なぜなら、
Pakage::Hoge->huga
は、実は
Package::Hoge::huga(Package::Hoge, @args)
を意味しているからです。
アロー演算子(->)を使った場合、メソッドの引数リストにクラス名が渡され、
クラスの継承関係を辿っていくことができます。これにより、
参照urlのように、パールのようなものでネコにニャーと泣かせることができます。
しばらく動物が嫌いになりそうです。
(続・初めてのPerl 11章)
perlboot - Perl オブジェクト指向導入編 【perldoc.jp】 http://perldoc.jp/docs/perl/5.10.0/perlboot.pod#Introducing32the32method32invocation32arrow