燈明日記 このページをアンテナに追加 RSSフィード

ごあいさつ

燈明日記へようこそ!!

燈明日記の主なテーマは、以下の通りです。

そして、燈明日記へ来られたのも『私』と『あなた』の何かのご縁です。なので、どうぞごゆっくりご覧下さい!


2008/7/19(土)

[] Perlでの『間接オブジェクト形式』とは

以下のつづきです。

以下のような形式でメソッドを起動することを『間接オブジェクトを使ったメソッドの起動』と言います。

METHOD INVOCANT (LIST)
METHOD INVOCANT LIST
METHOD INVOCANT

ちなみに、INVOCANT(インボカント)とは、パッケージ名(クラス名)または、オブジェクトを指すリファレンスです。

たとえば、newメソッド(インボカントはCar)とprintメソッド(インボカントはSTDERR)の場合は、以下の感じです。

$mycar = new Car('Green', 'セレナ', 2000);
print STDERR 'エラー情報1', "エラー情報2\n";

しかし、この『間接オブジェクト形式』には、2つの落とし穴あります。

1つ目は、他のリスト演算子と同じようにパースされるので、&&とandや||とorの優先順位の違いに注意が必要とされる。

たとえば、以下の感じ。

print STDERR "エラー情報\n" and exit(); # 『エラー情報』が表示される
print STDERR "エラー情報\n" && exit();  # 『エラー情報』が表示されない

2つ目は、INVOCANTに使えるのが、名前、添え字なしのスカラー変数、またはブロックだけに限られる。

たとえば、以下の感じ。

move $riders[$i];

は、

$riders[$i]->move;

でなく

$riders->move([$i]);

と解釈される。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証