2

私は現在 Perl プログラミングを勉強しており、次のようなステートメントに出くわしています。

return bless { }, $type;

return bless { };をするかは知っていますし、どうするかも知っていreturn $type;ますが、それらをコンマで区切るとどのようにステートメントに影響し、すべての単項演算子で同じように機能しますか?

4

2 に答える 2

5

blessは単項演算子ではないため、(hashref を bless するクラスの名前として使用される) に渡されます$typebless

returnに関する唯一の特別な点は、サブルーチンが呼び出されたコンテキストに応じて、右側の式がリスト、スカラー、または無効なコンテキストで評価される可能性があることです。

コンマ演算子は、ステートメント内で他の場所と異なる解釈returnをすることはありません (ただし、ステートメントを調べても、それがリスト コンテキストにあるかスカラー コンテキストにあるかどうかはわかりませんreturn)。

于 2011-01-28T05:37:31.413 に答える
2

定義済みの Perl 関数は、括弧の有無にかかわらず呼び出すことができます。他の言語から来たほとんどの人は、これらの関数をキーワード/演算子と混同しています。

bless、undef、push、pop、shift、unshift、print、split、join などはすべて関数です。

したがって、これら 2 つは同等です。

 return bless { }, $type;
 return bless({ }, $type);

しかし、これら2つはそうではありません:

 print 2 * 3 + 2; # prints 8
 print(2 * 3) + 2; # prints 6 (with a warning if warnings pragma is on)
于 2011-01-28T06:15:35.213 に答える