Ruby中运算符==~的含义是什么?

Ruby中运算符==~的含义是什么?,ruby,operators,Ruby,Operators,我正在修改现有的ruby代码。它有以下代码行。谁能告诉我发生了什么事 if string ==~ /^ABC/ do-something elsif string == "some string" do-something else do-something end 这里的if条件是什么。我在谷歌上搜索了==~操作符,但什么也没找到。 我刚刚找到了=~的解释,这意味着用正则表达式匹配字符串。 所以,如果上面的if条件为single=,则表示检查

我正在修改现有的ruby代码。它有以下代码行。谁能告诉我发生了什么事

if string ==~ /^ABC/
     do-something
elsif string == "some string"
     do-something
else
     do-something
end
这里的if条件是什么。我在谷歌上搜索了==~操作符,但什么也没找到。 我刚刚找到了=~的解释,这意味着用正则表达式匹配字符串。 所以,如果上面的if条件为single=,则表示检查字符串是否以ABC开头。但当我运行代码时,这并没有发生。即使字符串以ABC开头,它也不会进入if


我不确定这是否是错误或故意使用=

一元
运算符的优先级高于
=
=
,因此:

string ==~ /^ABC/
这只是一种令人困惑的写作方式:

string == (~/^ABC/)
但是它能做什么呢?手册上说:

~rxp→ 整数或零
将rxp与
$的内容进行匹配。相当于
rxp=~$\ux

并且是“gets或readline的字符串的最后一个输入行”。这给了我们:

string == (/^ABC/ =~ $_)
这没有任何意义,因为右手边是一个数字或
nil
,左手边大概是一个字符串。只有当
string.nil?
和正则表达式匹配失败时,该条件才为真,但有更好的方法可以做到这一点

我认为你有两个问题:

  • =~
    是一个可能应该是
    =~
    的打字错误
  • 您的测试套件有漏洞,可能只有一个漏洞可以容纳整个代码库


  • 还有一个类似的问题,请参见。

    我猜这是打字错误。它不是我以前见过的东西,可能是别人见过的,但也不是。如果你愿意,你可以将它定义为一个方法,但它不是一个核心方法、关键字或运算符。@anothermh
    =~
    也不是运算符,但在语法上是有效的代码。但是,是的,这几乎肯定是一个打字错误。你是对的。否则就是我的打字错误。这是埃尔西夫,不是别的。将修改问题。