==〜运算符有什么作用?

时间:2013-08-06 20:31:25

标签: ruby regex operators

==~运营商的行为如下所示?

['a','b','c'].join ==~ /b/
# =>false

我尝试了一些不同的数组和字符串,但从未收到语法错误,但==~似乎是一个总是返回false的正则表达式比较运算符。

2 个答案:

答案 0 :(得分:3)

你是对的==~实际上是==~,但是一元~对你认为它的正则表达具有不同的含义。来自fine manual

  

~rxp→整数或零

     

匹配匹配<{1}}内容的 rxp 。相当于$_

rxp =~ $_

通常,您在命令行中使用$_ = "input data" ~ /at/ #=> 7 一个使用the switches之一的衬里,它将Ruby包装在一个隐式循环中并设置~regex

考虑这个简单的例子,你会看到发生了什么:

$_

答案 1 :(得分:1)

这实际上是两个不同的运算符==~~是按位not或按位补码运算符。当用于正则表达式时,它总是计算为nil。我认为这是因为正则表达式没有有意义的按位模式。

>~/b/
=> nil

当你将nil与任何东西(除了nil)进行比较时,你会得到假的。

>a=60
=> 60
> ~a
=> -61

如果你有一个变量a并且它将60存储为Fixnum,那么在x86上它实际存储00111100。在这种情况下,~a会返回11000011,-61。

所代表的值
相关问题