2013-02-22 78 views
2

我試圖在下面的代碼中與運營商!~!=一起玩。但無法弄清楚這種差異。但我懷疑,如果不是這樣,爲什麼Ruby介紹他們?Ruby中的「!=」和「!〜」是否有區別?

2 !=3 
# => true 
2 !~ 3 
# => true 
c= [1,2,3] 
# => [1, 2, 3] 
d=[1,4,5] 
# => [1, 4, 5] 
c != d 
# => true 
c !~ d 
# => true 

任何人都可以請幫我在這裏說,如果它們之間有什麼區別?

+0

我相信'!〜'是用來匹配正則表達式的字符串。 – MurifoX 2013-02-22 20:29:36

+0

'2!= 2;'=>'false'但是'2!〜2;'=>'true' – 2013-02-22 20:35:16

回答

7

The =~ operator及其負!~用於模式匹配。它被RegexpString覆蓋,以提供正則表達式模式匹配,但是對於數字它沒有實現。這就是爲什麼2 =~ 3給出nil,所以2 !~ 3true

+0

如果沒有對數字實施罰款,那麼這些'boolean'值是怎麼來的? – 2013-02-22 20:37:10

+1

['! nil == true'。](http://ruby-doc.org/core-1.9.3/BasicObject.html#method-i-21) – jtbandes 2013-02-22 20:40:35

+0

意味着你說'2!〜3'返回'!nil' ? – 2013-02-22 20:48:05

相關問題