単項プラス演算子は、オペランドを変更せずに返すだけです。1つ追加しても、コンテキストは変更されません。
あなたが与えた例では、それは完全に役に立たない。ただし、次のトークンを間違いなく演算子にすることが役立つ場合があります。
たとえば、にmap
は2つの構文があります。
map EXPR, LIST
と
map BLOCK LIST
ブロックはで始まります{
が、式も同様です。たとえば{ }
、ブロックまたはハッシュコンストラクターにすることができます。
では、どうすればmap
違いがわかりますか?推測します。それは時々間違っていることを意味します。
推測が間違っている1つの機会は、次のとおりです。
map { $_ => 1 }, @list
+
またはを使用して正しく推測することができます;
。
map {; ... # BLOCK
map +{ ... # EXPR
したがって、この場合、
map +{ foo => $_ }, @list
次のものも使用できることに注意してください。
map({ foo => $_ }, @list)
もう1つの例は、引数の周りのパレンを省略し、最初の引数式がパレンで始まる場合です。
print ($x+$y)*2; # Same as: 2 * print($x+$y)
を使用して修正できます
print +($x+$y)*2;
しかし、なぜ親を避けるためだけにハックを重ねるのですか?私は好きです
print(($x+$y)*2);