2011-10-07 79 views

回答

19

這不是一個操作員,這是兩個操作員寫成看起來像一個操作員。

operator precedence table(最高到最低):

[] []=
**
! ~ + -[一元]
[數更多的行]
<=> == === != =~ !~

此外,正則表達式類有一個unary ~ operator

〜RXP→整數或零
配對匹配rxp針對$_內容。相當於rxp =~ $_

所以你的表情相當於:

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

而且Regexp#=~運營商(不一樣的更熟悉的String#=~)返回一個數字:

RXP =〜海峽→整數或零
匹配rxp對str。

因此,您最終的結果是真實的,因爲將字符串與數字進行比較是錯誤的。

例如:

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