我一直在用 perl 编写 FizzBuzz……具体来说,我想做一个看起来像噩梦的代码行,看看我能不能做到。这当然意味着嵌套的三元语句!
但是我发现在 15 年代它从不打印 FizzBuzz,只是 Fizz。我找不到原因,因为这意味着如果第一个三元语句返回 true,它只是跳过了第二个语句。
这是我想出的小噩梦。是的,它可能会更糟,但我对 perl 真的没有那么强,这只是对我自己的练习:
#!/usr/bin/perl
for (my $i=1; $i<=100; $i++) {
( !( ($i % 3 == 0) ? print "Fizz" : 0) && !( ($i % 5 == 0) ? print "Buzz" : 0) ) ? print "$i\n" : print "\n";
}
这是前 20 行输出:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz
16
17
Fizz
19
Buzz
print 语句会做什么会导致这种情况发生?