2013-02-22 33 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

相关问题