【发布时间】:2017-06-16 20:53:49
【问题描述】:
我在理解 perl 的操作顺序时遇到了一些麻烦。我有以下内容:
>> my $n = 2;
>> my @arr = (1,2,3,4);
>> print $n/scalar @arr * 100;
0.005
但添加括号:
>> my $n = 2;
>> my @arr = (1,2,3,4);
>> print $n/(scalar @arr) * 100;
50
查看order of operations,似乎首先应该发生的是列表操作。在这种情况下,遇到的第一个是scalar @arr,它应该返回4。结果表达式应该是print $n/4 * 100,它将遵循标准的操作顺序并产生50。
但是,我假设正在发生的事情是它首先执行@arr * 100,产生标量值400,然后执行scalar 400,产生400,然后执行$n/400,给出@987654332 @。
如果是后者,那么我的问题是scalar 在操作顺序中的位置。如果发生了其他事情,那么我的问题是,嗯,是什么?
【问题讨论】:
标签: arrays perl operator-precedence