Ruby中的运算符==~是什么意思?
What is the meaning of operator ==~ in Ruby?
我正在修改现有的 ruby 代码。它具有以下代码行。谁能告诉我这是怎么回事。
if string ==~ /^ABC/
do-something
elsif string == "some string"
do-something
else
do-something
end
if 条件在这里做什么。我在谷歌上搜索了 ==~ 运算符,但一无所获。
我刚找到 =~ 的解释,意思是用正则表达式匹配字符串。
所以,如果上面的 if 条件有一个 = ,这意味着检查字符串是否以 ABC 开头。但是当我 运行 代码时,这并没有发生。即使字符串以 ABC 开头,它也不会进入 if.
我不确定这是一个错误还是故意使用 ==~
一元运算符 ~
的优先级高于 ==
或 =~
因此:
string ==~ /^ABC/
只是一种容易混淆的写法:
string == (~/^ABC/)
但是 Regexp#~
有什么作用呢?精美手册说:
~ rxp → integer or nil
Match—Matches rxp against the contents of $_
. Equivalent to rxp =~ $_
.
和$_
是“gets或readline输入的最后一行字符串”。这给了我们:
string == (/^ABC/ =~ $_)
这根本没有任何意义,因为右侧将是一个数字或 nil
而左侧可能是一个字符串。仅当 string.nil?
且正则表达式匹配失败时条件才会为真,但有更好的方法来做到这一点。
我认为你有两个问题:
==~
打错了,应该是 =~
.
- 您的测试套件有漏洞,可能整个代码库都适合一个漏洞。
另请参阅 What is the !=~ comparison operator in ruby? 了解类似问题。
我正在修改现有的 ruby 代码。它具有以下代码行。谁能告诉我这是怎么回事。
if string ==~ /^ABC/
do-something
elsif string == "some string"
do-something
else
do-something
end
if 条件在这里做什么。我在谷歌上搜索了 ==~ 运算符,但一无所获。 我刚找到 =~ 的解释,意思是用正则表达式匹配字符串。 所以,如果上面的 if 条件有一个 = ,这意味着检查字符串是否以 ABC 开头。但是当我 运行 代码时,这并没有发生。即使字符串以 ABC 开头,它也不会进入 if.
我不确定这是一个错误还是故意使用 ==~
一元运算符 ~
的优先级高于 ==
或 =~
因此:
string ==~ /^ABC/
只是一种容易混淆的写法:
string == (~/^ABC/)
但是 Regexp#~
有什么作用呢?精美手册说:
~ rxp → integer or nil
Match—Matches rxp against the contents of$_
. Equivalent torxp =~ $_
.
和$_
是“gets或readline输入的最后一行字符串”。这给了我们:
string == (/^ABC/ =~ $_)
这根本没有任何意义,因为右侧将是一个数字或 nil
而左侧可能是一个字符串。仅当 string.nil?
且正则表达式匹配失败时条件才会为真,但有更好的方法来做到这一点。
我认为你有两个问题:
==~
打错了,应该是=~
.- 您的测试套件有漏洞,可能整个代码库都适合一个漏洞。
另请参阅 What is the !=~ comparison operator in ruby? 了解类似问题。