这是我的代码示例:
for $i(1..100){
if ($i%15==0){$s="Divisible by 15"}
elsif($i%5==0){$s="Divisible by 5"}
else {$i%3==0 ? $s="Divisible by 3" : $s=$i};
print $s."\n"}
这会显示部分正确的结果,如果一个数字可以被 3 整除,它会显示“数字”而不是“能被 3 整除”。
输出示例:
1
2
3
4
Divisible by 5
6
7
8
9
Divisible by 5
PS:我必须以最少的数量编写这段代码。可能的字符数。 (代码这么慢的原因)
最佳答案
第四行解析为
(((($i % 3) == 0) ? ($s = 'Divisible by 3') : $s) = $i)
这意味着即使 $i
可以被 3 整除,赋值看起来也像
($s = 'Divisible by 3') = $i
一些修复:
$i%3==0 ? ($s="Divisible by 3") : ($s=$i)
$s = ($i%3==0 ? "Divisible by 3" : $i)
专业提示:B::Deparse
对于解决这个问题非常有帮助。我运行了命令
perl -MO=Deparse,-p -e '$i%3==0 ? $s="Divisible by 3" : $s=$i'
准确地了解问题所在。
关于perl - 三元运算符中的条件不会引起任何变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14651297/