小编war*_*rus的帖子

奇数Perl条件运算符行为

我在Perl中做了一些工作,我使用条件运算符跑了一个奇怪的结果.

有问题的代码:

($foo eq "blah") ? @x = @somearray : @y = ("another","array");
Run Code Online (Sandbox Code Playgroud)

尝试编译此代码会导致错误" Assignment to both a list and a scalar at XXX line YY, near ');'".在尝试查明错误的来源时,我使用了几种不同的方式在Perl中表示数组,并且它们都返回相同的错误.现在起初我认为这对于赋值语句只是一些愚蠢的明显错误,但为了满足我的好奇心,我用更冗长的方式重写了语句:

if($foo eq "blah") {
    @x = @somearray;
} else {
    @y = ("another","array");
}
Run Code Online (Sandbox Code Playgroud)

该版本的代码编译得非常好.

在条件运算符的工作方式和基本的if-else语句之间是否存在一些很好的区别,我在这里缺少这些语句?我总是将条件运算符理解为第二个语句的简写版本.如果两者之间没有功能差异,为什么Perl会反对第一个语句,而不是第二个语句?

perl if-statement conditional-operator

3
推荐指数
4
解决办法
608
查看次数

标签 统计

conditional-operator ×1

if-statement ×1

perl ×1