私は現在 Perl プログラミングを勉強しており、次のようなステートメントに出くわしています。
return bless { }, $type;
何return bless { };
をするかは知っていますし、どうするかも知っていreturn $type;
ますが、それらをコンマで区切るとどのようにステートメントに影響し、すべての単項演算子で同じように機能しますか?
blessは単項演算子ではないため、(hashref を bless するクラスの名前として使用される) に渡されます$type
。bless
returnに関する唯一の特別な点は、サブルーチンが呼び出されたコンテキストに応じて、右側の式がリスト、スカラー、または無効なコンテキストで評価される可能性があることです。
コンマ演算子は、ステートメント内で他の場所と異なる解釈return
をすることはありません (ただし、ステートメントを調べても、それがリスト コンテキストにあるかスカラー コンテキストにあるかどうかはわかりませんreturn
)。
定義済みの 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)