私は偶然にこの演算子を見つけました:ルビーの!=〜比較演算子は何ですか?
ruby-1.9.2-p290 :028 > "abc" !=~ /abc/
=> true
は、この何ですか?それは "不一致"のようには見えません。
私は偶然にこの演算子を見つけました:ルビーの!=〜比較演算子は何ですか?
ruby-1.9.2-p290 :028 > "abc" !=~ /abc/
=> true
は、この何ですか?それは "不一致"のようには見えません。
これは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
の逆は本当のオペレータではないようです。おそらくそれは '!'と '=〜'です –