有这样的事吗?相当于a <= expr <= b
,或者在SQL术语expr BETWEEN a AND b
中,expr
仅评估一次?或者只是要求getting silly?
答案 0 :(得分:19)
在Perl中有很多种方法可以做到这一点。
if( $a < $x and $x < $b ){ ... }
... if $a < $x and $x < $b;
use 5.10.1;
if( $x ~~ [$a..$b] ){ ... }
given( $x ){
when( [$a..$b] ){ ... }
}
use 5.11.0; # development branch
given( $x ){
... when [$a..$b];
}
答案 1 :(得分:5)
您可以使用Range operator
+ smart macthing
:
if($expr ~~ [$a..$b])
答案 2 :(得分:2)
在Perl6中,比较运算符是可链接的。
http://perlcabal.org/syn/S03.html#Chained_comparisons:
Perl 6支持比较运算符的自然扩展,允许多个操作数:
if 1 < $a < 100 { say "Good, you picked a number *between* 1 and 100." }
if 3 < $roll <= 6 { print "High roll" }
if 1 <= $roll1 == $roll2 <= 6 { print "Doubles!" }
在Perl 5中,它们不是。
答案 3 :(得分:1)
我认为它们并不完全一致,但请查看Range Operators。
答案 4 :(得分:0)
我认为这是你唯一的选择。
$x = expr;
if ($a < $x && $x < $b) {
# stuff
}