2009-11-06 95 views

回答

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]; 
} 
+4

這是智能匹配的一個很好的用法,非常易讀! – Ether 2009-11-06 22:37:10

+1

+1我每天都會學到新的東西。 – 2009-11-06 23:03:22

+1

這是否按照你想要的方式工作?我現在只有5.10.0可用,但5.10.1和5.11.x手冊未提及智能匹配範圍運算符的任何更改,而SCALAR ~~ ARRAY語義只有在具有整數時纔會生效。現在,如果這是Perl 6,其中範圍是他們自己的類型... – hobbs 2009-11-06 23:33:29

-1

我認爲這是你唯一的選擇。

$x = expr; 

if ($a < $x && $x < $b) { 
    # stuff 
} 
+5

對於說「只有一種方式來做」 – mob 2009-11-06 21:49:14

+3

到目前爲止,這是除了整數以外的唯一正確答案。 – jrockway 2009-11-07 13:24:44

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,它們不是。

相關問題