【发布时间】:2012-02-22 21:51:39
【问题描述】:
我正在尝试在我的脚本中编写更高效的代码,并且有时会实现三元条件运算符。我不明白为什么在循环中使用三元条件运算符时会得到额外的结果:
#!/usr/bin/perl
use strict;
use warnings;
my @array = ('Serial = "123"', 'Serial = "456"', 'Serial = "789"');
my ($test1,$test2);
foreach my $a (@array){
!$test1 ? $test1 = $a : $test1 .= " AND " . $a;
}
foreach my $b (@array){
if (!$test2) {
$test2 = $b
} else {
$test2 .= " AND " . $b;
}
}
print "Test1: $test1\n";
print "Test2: $test2\n";
输出:
~/bin/test.pl
Test1: Serial = "123" AND Serial = "123" AND Serial = "456" AND Serial = "789"
Test2: Serial = "123" AND Serial = "456" AND Serial = "789"
Test1 输出有一个额外的“Serial = “123”,我做错了什么?
【问题讨论】:
-
三元条件运算符不会使您的代码更高效。它使它可读性降低。我什至不知道在
.=运算符的左侧嵌入赋值的三元条件运算符意味着什么,更不用说它是否能正常工作了。 -
你为什么要以这种奇怪的方式重新实现
join?
标签: perl operator-precedence conditional-operator