xan*_*xan -2 string int perl ternary-operator
这是我的代码:
for($i=1;$i<=100;$i++){
if($i%15==0) print "Divisible by 15";
else if($i%5==0) print "Divisible by 5";
else print ($i%3==0)? "Divisible by 3":$i;
print "\n";
}
Run Code Online (Sandbox Code Playgroud)
它是一个非常简单的代码.我使用Java工作,虽然它在Perl中出错.错误是:
syntax error at line 2, near ") print"
Execution aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)
我是Perl的新手.我怎样才能让它运转起来?
试试这个版本:
for($i=1;$i<=100;$i++){
if ($i%15==0) { print "Divisible by 15" }
elsif($i%5==0) { print "Divisible by 5" }
else { print +($i%3==0)? "Divisible by 3":$i; }
print "\n";
}
Run Code Online (Sandbox Code Playgroud)
您需要在if语句的then部分周围添加大括号,elsif而不是使用else if.
如果没有+在print声明中,perl的解析语句:
print(...) ? "Divisible by 3" : $i;
Run Code Online (Sandbox Code Playgroud)
即.它将使用返回的值print作为三元运算符的第一个参数.另一种解决方案是写:
else { print( $i % 3 == 0 ? "..." : $i ) }
Run Code Online (Sandbox Code Playgroud)