==~操作员在下面做什么?

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

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

最佳答案

你说得对,实际上==~==~但是一元~对regex有不同的含义,你认为它是这样的。从fine manual开始:
~rxp→整数或零
match将rxp与$_的内容匹配。相当于rxp =~ $_

$_ = "input data"
~ /at/   #=> 7

通常在命令行中使用~regex一行程序,它使用the switches中的一行程序,将ruby封装在一个隐式循环中并设置$_
考虑这个简单的例子,您将看到发生了什么:
>> $_ = 'pancakes'
=> "pancakes"
>> ~/pancakes/
=> 0
>> 0 ==~ /pancakes/
=> true

10-06 04:49