2011-10-07 78 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