[英]Perl: Multiple ='s signs in one line (list and scalar context confusion)
我从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
一个常见的误解是以下代码将a
分配给b
:
b = a = 3
但是您不会期望以下内容将a
分配给b
,对吧?
b = a + 3
您必须查看=
得出的结果(返回)。
作业具有从右到左的关联性,因此
$ret = () = ($i, $j, $k) = (5, 6, 8, 9);
手段
3 2 1
$ret = ( () = ( ($i, $j, $k) = (5, 6, 8, 9) ));
$i, $j, $k
)评估其LHS返回的标量。 3
)返回的标量数量。 $ret
。 同样
$ret = ($i, $j, $k) = (5, 6, 8, 9);
手段
2 1
$ret = ( ($i, $j, $k) = (5, 6, 8, 9) );
$ret
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.