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

+0

'2! = 2;' => 'false', но' 2! ~ 2; '=>' true' –

ответ

7

The =~ operator и его отрицательный !~ предназначены для сопоставления образцов. Он переопределяется Regexp и String, чтобы обеспечить соответствие шаблону регулярного выражения, но для чисел оно не реализовано. Вот почему 2 =~ 3 дает nil, поэтому 2 !~ 3 is true.

+0

Если он не реализован для чисел в порядке, то как поступают такие значения 'boolean'> –

+1

['! nil == true'.] (http://ruby-doc.org/core-1.9.3/BasicObject.html#method-i-21) – jtbandes

+0

означает, что вы говорите '2! ~ 3' return'! nil' ? –