我在Perl的教程中看到了这一行:
$ret = (($i, $j, $k)=(5,6,8,9)); # 4
我不熟悉在一行中有多个=符号的格式。从我读到的内容来看,它与上下文有关。
我用另一对括号括起($i, $j, $k)=(5,6,8,9)
似乎很奇怪,但我会把它作为解释列表上下文中的包装文本。
但是,为什么以下不同? = () =
是不是意味着同样的事情?为什么在列表上下文之前进行赋值?
$ret = () = ($i, $j, $k)=(5,6,8,9); # 3
但以下是4又是什么?
$ret = ($i, $j, $k)=(5,6,8,9); # 4
答案 0 :(得分:3)
一个常见的误解是,以下内容将a
分配给b
:
b = a = 3
但是您不希望以下内容将a
分配给b
,对吧?
b = a + 3
您必须查看=
评估的内容(返回)。
根据Mini-Tutorial: Scalar vs List Assignment Operator,
作业具有从右到左的关联性,所以
$ret = () = ($i, $j, $k) = (5, 6, 8, 9);
装置
3 2 1
$ret = ( () = ( ($i, $j, $k) = (5, 6, 8, 9) ));
$i, $j, $k
)。3
)返回的标量数量。$ret
。类似地
$ret = ($i, $j, $k) = (5, 6, 8, 9);
装置
2 1
$ret = ( ($i, $j, $k) = (5, 6, 8, 9) );
$ret
。