ruby中的!=〜比较运算符是什么?
我偶然发现了这个算子:
ruby-1.9.2-p290 :028 > "abc" !=~ /abc/ => true
这是什么? 它的行为看起来不像“不匹配”。
这不是一个运算符,它是两个运算符,看起来像一个运算符。
从运算符优先级表 (从最高到最低):
[] []=
**
! ~ + -
! ~ + -
[一元]
[多几行]
<=> == === != =~ !~
此外,Regexp类有一个一元~
运算符 :
~rxp→整数或零
匹配匹配$_
的内容rxp
。 相当于rxp =~ $_
。
所以你的表达相当于:
"abc" != (/abc/ =~ $_)
而Regexp#=~
运算符(与更熟悉的String#=~
)返回一个数字:
rxp = ~str→整数或nil
匹配匹配rxp与str。
因此,您将最终结果视为真实,因为将字符串与数字进行比较是错误的。
例如:
>> $_ = 'Where is pancakes house?' => "Where is pancakes house?" >> 9 !=~ /pancakes/ => false >> ~ /pancakes/ => 9
!~
是=~
NOT !=~
的倒数