有一个更好的方法吗?我正在尝试根据标量的值构建2个数组:
my (@x, @y);
my $r = [$v1, $v2, $v3];
push @x, $r if $s eq 'YES';
push @y, $r if $s ne 'YES';
Run Code Online (Sandbox Code Playgroud)
我试过用:
push $s eq 'YES' ? @x : @y, $r;
Run Code Online (Sandbox Code Playgroud)
有没有parens,但没有去.
错误是:
Type of arg 1 to push must be array (not null operation) at comp_report.pl line 79, near "$r;"
Run Code Online (Sandbox Code Playgroud)
yst*_*sth 13
push要求它的第一个参数是一个实际的数组(至少在perl 5.14和更早版本之前 - 它可能已经改变了),而不是表达式,所以你需要:
push @{ $s eq 'YES' ? \@x : \@y}, $r;
Run Code Online (Sandbox Code Playgroud)
从5.14开始,内置如推送实验可以采用任意硬引用,因此这有效:
push $s eq 'YES' ? \@x : \@y, $r;
Run Code Online (Sandbox Code Playgroud)
push @{ $s eq 'YES' ? \@x : \@y }, $r;
Run Code Online (Sandbox Code Playgroud)
push 我真的想要一个数组作为它的第一个参数,但你仍然可以通过使用引用动态选择目标.
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |