小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

Perlでの『new』とは

newは、Java系(C++,JavaScript等)やVB系(VB.NET,VBScript等)では、オブジェクトをコンストラクトします。
そして、Java系では「new演算子」、VB系では「newキーワード」と呼ばれています。
では、Perlのnewは、なんでしょうか・・・。


Perlの場合は、newという演算子やキーワードは存在しません。また、組み込み関数でもありません。
Perlでのnewは、単なるパッケージサブルーチン(メソッド)で、JavaVBと同じように記述できるのは、『間接オブジェクト形式』と云う呼び出し方なのです。
逆に云うと『間接オブジェクト形式』での呼び出し方が、たまたまJavaVBのnewと似ているだけなのです。

      my $mycar = new Car('Green', 'セレナ', 2000);

しかし、newは、先ほども述べましたが、単なるメソッドなので、普通の『矢印形式』でも呼び出せます。

      my $mycar = Car->new('Green', 'セレナ', 2000);

私としては、クラスから『->』で強く修飾されて明示される『矢印形式』の方がお奨めです。
なぜお奨めかというと実は、『間接オブジェクト形式』には、2つの落とし穴があるのです。それについては、そのうちに・・・。


2つの落とし穴、以下に書いてみました。
http://d.hatena.ne.jp/chaichanPaPa/20080719/1216451016