3

==~オペレーターは次のように何をしますか?

['a','b','c'].join ==~ /b/
# =>false

いくつかの異なる配列と文字列を試してみましたが、構文エラーは発生しませんでしたが、==~常に を返す正規表現比較演算子のようfalseです。

4

2 に答える 2

3

あなたは正しいです==~==~単項~は正規表現に対してあなたが思っているのとは異なる意味を持っています。細かいマニュアルから:

~ rxp → 整数または nil

Match— rxpを の内容と照合し$_ます。に相当しrxp =~ $_ます。

$_ = "input data"
~ /at/   #=> 7

通常~regex、コマンド ラインでは Ruby を暗黙のループでラップして$_.

この簡単な例を考えてみると、何が起こっているかがわかります:

>> $_ = 'pancakes'
=> "pancakes"
>> ~/pancakes/
=> 0
>> 0 ==~ /pancakes/
=> true
于 2013-08-06T21:03:42.197 に答える
1

これは、実際には 2 つの異なる演算子==~です。~ビット単位notまたはビット単位の補数演算子です。正規表現に対して使用すると、常に nil と評価されます。これは、正規表現に意味のあるビット単位のパターンがないためだと思います。

>~/b/
=> nil

nil を何か (nil を除く) と比較すると、false になります。

>a=60
=> 60
> ~a
=> -61

変数がaあり、Fixnum として 60 を格納している場合、x86 では実際には00111100. この場合、-61 で~a表される値を返します。11000011

于 2013-08-06T20:32:17.687 に答える