==~
オペレーターは次のように何をしますか?
['a','b','c'].join ==~ /b/
# =>false
いくつかの異なる配列と文字列を試してみましたが、構文エラーは発生しませんでしたが、==~
常に を返す正規表現比較演算子のようfalse
です。
あなたは正しいです==~
が==
、~
単項~
は正規表現に対してあなたが思っているのとは異なる意味を持っています。細かいマニュアルから:
~ rxp → 整数または nil
Match— rxpを の内容と照合し
$_
ます。に相当しrxp =~ $_
ます。$_ = "input data" ~ /at/ #=> 7
通常~regex
、コマンド ラインでは、 Ruby を暗黙のループでラップして$_
.
この簡単な例を考えてみると、何が起こっているかがわかります:
>> $_ = 'pancakes'
=> "pancakes"
>> ~/pancakes/
=> 0
>> 0 ==~ /pancakes/
=> true
これは、実際には 2 つの異なる演算子==
と~
です。~
ビット単位not
またはビット単位の補数演算子です。正規表現に対して使用すると、常に nil と評価されます。これは、正規表現に意味のあるビット単位のパターンがないためだと思います。
>~/b/
=> nil
nil を何か (nil を除く) と比較すると、false になります。
>a=60
=> 60
> ~a
=> -61
変数がa
あり、Fixnum として 60 を格納している場合、x86 では実際には00111100
. この場合、-61 で~a
表される値を返します。11000011