2011-10-07 6 views
15

私は偶然にこの演算子を見つけました:ルビーの!=〜比較演算子は何ですか?

ruby-1.9.2-p290 :028 > "abc" !=~ /abc/ 
=> true 

は、この何ですか?それは "不一致"のようには見えません。

+0

の逆は本当のオペレータではないようです。おそらくそれは '!'と '=〜'です –

答えて

19

これは1つの演算子ではなく、2つの演算子が1つの演算子のように書かれています。 operator precedence table(最低から最高)から

[] []=
**
! ~ + -[単項]
[いくつかの複数の行]
<=> == === != =~ !~

また、RegExpクラスはunary ~ operatorあります

〜RXP→整数または
マッチマッチ$_の内容に対してrxpはnil。 rxp =~ $_と等価です。

だからあなたの式は同等です:

"abc" != (/abc/ =~ $_) 

Regexp#=~演算子(もっと身近String#=~と同じではありませんが)数を返します。

RXP =〜strの→整数またはnil
rxpとstrを一致させます。

文字列と数値を比較すると、結果が真であるため、結果は真です。例えば

>> $_ = 'Where is pancakes house?' 
=> "Where is pancakes house?" 
>> 9 !=~ /pancakes/ 
=> false 
>> ~ /pancakes/ 
=> 9 
13

!~=~ませ!=~

+0

これを共有してくれてありがとう。 – LandonSchropp

関連する問題