fis*_*en0 2 variables perl equals
在Perl中,可以像这样实例化多个变量:
my ($a, $b, $c) = (1,2,3);
Run Code Online (Sandbox Code Playgroud)
也可以以相同的方式重新分配多个变量值:
($a, $b, $c) = (4,5,6);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用plus equals运算符执行相同的操作时,
($a, $b, $c) += (7,8,9);
Run Code Online (Sandbox Code Playgroud)
只有$c正确添加,其他变量保持原始值.这是Perl应该可行的东西,还是只是偶然部分工作而且它真的不起作用?如果后者是真的,有没有办法在一行中达到这个目的?
ike*_*ami 12
它只是偶然部分工作,它真的不起作用吗?
是.
标量上下文中的列表运算符依次计算其每个操作数,并返回其最后一个操作数计算的值.所以你基本上做了以下事情:
do { $a; $b; $c } += do { 7; 8; 9 };
Run Code Online (Sandbox Code Playgroud)
这就是为什么你得到以下内容
Useless use of a constant (7) in void context at -e line 1.
Useless use of a constant (8) in void context at -e line 1.
Useless use of a variable in void context at -e line 1.
Useless use of a variable in void context at -e line 1.
Run Code Online (Sandbox Code Playgroud)
有没有办法在一行中达到这个目的?
当然,有无数的.这是三个:
$a += 7; $b += 8; $c += 9;
${$_->[0]} += $_->[1] for [\$a,7],[\$b,8],[\$c,9];
use List::MoreUtils qw( pairwise );
pairwise { $$a += $b; } @{[\$x,\$y,\$z]}, @{[7,8,9]};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |