==~
運營商如下所示做什麼?==〜運算符是做什麼的?
['a','b','c'].join ==~ /b/
# =>false
我嘗試了一些不同的數組和字符串,並沒有收到一個語法錯誤,但==~
似乎是一個正則表達式比較運算符總是返回false
。
==~
運營商如下所示做什麼?==〜運算符是做什麼的?
['a','b','c'].join ==~ /b/
# =>false
我嘗試了一些不同的數組和字符串,並沒有收到一個語法錯誤,但==~
似乎是一個正則表達式比較運算符總是返回false
。
你說得對,==~
實際上是==
和~
但一元~
有,你認爲它正則表達式的含義不同。從fine manual:
〜RXP→整數或零
匹配,匹配RXP反對
$_
內容。相當於rxp =~ $_
。$_ = "input data" ~ /at/ #=> 7
通常你會在使用的the switches一個包裝你的Ruby在一個隱含的循環,並設置$_
一個命令行一個襯墊中~regex
。
考慮這個簡單的例子,你就會明白是怎麼回事:
>> $_ = 'pancakes'
=> "pancakes"
>> ~/pancakes/
=> 0
>> 0 ==~ /pancakes/
=> true
這實際上是兩個不同的運營商==
和~
。 ~
是按位not
或按位補碼運算符。對正則表達式使用時,它總是評估爲零。我認爲這是因爲正則表達式沒有一個有意義的按位模式。
>~/b/
=> nil
當你比較零與任何東西(除了零)你會得到錯誤。
>a=60
=> 60
> ~a
=> -61
如果你有一個變量a
,它是儲存60一個Fixnum,在x86其實際存儲00111100
。在這種情況下,~a
返回由11000011
,-61表示的值。
我不會接受我的答案,直到別人有機會寫一個更好的。我很好奇爲什麼〜/ b /是nil而不是語法錯誤或有意義的答案,並且這被視爲「==〜」而不是「= =〜」。 – Sqeaky
'= =〜'沒有意義。 – sawa
@sawa它會觸發一個語法。 – Sqeaky