请解释这个明显不一致的行为:
$a = b,c; print $a; # this prints: b $a = (b,c); print $a; # this prints: c
解决方法
由于eugene的答案似乎留下了OP的一些问题,我试着解释一下:
$a = "b","c"; print $a;
左边的参数是$a =“b”,因为=的优先级高于,它将首先进行评估.之后$a包含“b”.
正确的参数是“c”,并将在我即将展示时返回.
此时,当您打印$a时,显然是在屏幕上打印b.
$a = ("b","c"); print $a;
这里将首先评估术语(“b”,“c”),因为括号的优先级更高.它返回“c”,这将被分配给$a.
所以在这里打印“c”.
$var = ($a = "b","c"); print $var; print $a;
这里$a包含“b”,$var包含“c”.
一旦获得优先规则,这就完全一致了