首先,我意识到我可以用这个操作符编写一个 if 语句来编译和运行。我想知道是否有一种方法可以用来制作 if
/elsif
/else
block 更优雅一点。
我目前有一个看起来像这样的代码块
if( $bill == $ted) {
# Do some stuff
} elsif( $bill < $ted) {
# Do different stuff
} else {
# Do really weird stuff
}
因此,我希望脚本根据两个值是否相等或不相等(以较低者为准)来执行特定的操作。好像是 <=>
运算符将非常适合此操作。
最佳答案
这有点晦涩,但您可以使用 <=>
运算符获取调度表的元素:
( sub { say 'they are the same' },
sub { say 'x is greater' },
sub { say 'x is lesser' }
)[$x <=> $y]->();
这是基于索引 -1 返回列表的最后一个元素这一事实。
使用散列可能更具可读性。
{ 0 => sub { say 'they are the same' },
1 => sub { say 'x is greater' },
-1 => sub { say 'x is lesser' }
}->{ $x <=> $y }->();
关于perl - 有没有办法在 perl if 语句中使用 <=> 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51084217/