为什么我的$ x =如果(0){1}否则{2}`起作用?

问题描述 投票:2回答:1

在perl中,$x = if (0) {1} else {2}不起作用。

$ perl -E'$x = if (0) {1} else {2}'
syntax error at -e line 1, near "= if"
Execution of -e aborted due to compilation errors.

这很有意义,因为if条件不是Perl中的表达式。它们是流量控制。

但是然后

my $x = do { if (0) {1} else {2} };

工作! do BLOCK如何接受条件if?但是分配不能吗?在上面看来,流量控制必须是]

  • 知道它在do BLOCK中的上下文
  • 总是充当表达式,但是解析器不允许该语法。
  • 此外,鉴于上述简单事实,描述行为类似的if条件的正确方法是什么?它是带有值的表达式吗?评估后没有价值的流程控制构造吗?

最后,必须对赋值进行什么修改才能使其接受像if这样的do BLOCK条件。

在perl中,$ x =如果(0){1}否则{2}不起作用。 $ perl -E'$ x = -e行1处的if(0){1} else {2}'语法错误,靠近“ = if” -e的执行由于编译错误而中止。这很有道理,...

perl if-statement expression
1个回答
0
投票

要在Perl中的赋值中使用条件,请使用“?:”命令,如果不是,则不要:

© www.soinside.com 2019 - 2024. All rights reserved.