ruby 中的 !=~ 比较运算符是什么?
我偶然发现了这个运算符:
ruby-1.9.2-p290 :028 > "abc" !=~ /abc/
=> true
这是什么?它的行为看起来不像“不匹配”。
I found this operator by chance:
ruby-1.9.2-p290 :028 > "abc" !=~ /abc/
=> true
what's this? It's behavior doesn't look like "not match".
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这不是一个运算符,而是两个编写得像一个运算符的运算符。
从运算符优先级表(从最高到最低):
另外,Regexp 类有一个 一元
~
运算符:所以你的表达式相当于:
Regexp#= ~
运算符(与更熟悉的String#=~
) 返回一个数字:所以你的最终结果是 true,因为将字符串与数字进行比较是 false。
例如:
That's not one operator, that's two operators written to look like one operator.
From the operator precedence table (highest to lowest):
Also, the Regexp class has a unary
~
operator:So your expression is equivalent to:
And the
Regexp#=~
operator (not the same as the more familiarString#=~
) returns a number:So you get true as your final result because comparing a string to a number is false.
For example:
!~
是=~
的逆,而不是!=~
!~
is the inverse of=~
NOT!=~