这是我的代码
pong = /return/.match(cap.array[0])
if pong == "return"
puts "Pong"
end
cap.array[0]
/return/
正如您在我使用时看到的那样,绝对匹配pp
:
#<MatchData "return">
但由于某种原因,该if
语句没有触发。任何想法为什么它不匹配?我试过==
并===
认为这可能是一个类型问题,但没有快乐。
为什么要两次检查??您可以通过以下简单方式进行操作:
if /return/ =~ cap.array[0]
puts "pong"
end
例如:
/return/ =~ "Functions return value" #=> 14
/return/ =~ "return" #=> 0
在红宝石中:
puts "hello" if 0 #=> hello # 0 is not false
所以你可以避免多次检查
Regex#match
返回一个MatchData
对象。因此,它与字符串的比较失败。
pong = /return/.match('i shall return this')
# cast it to string
if pong.to_s == "return"
# or do this
# if pong[0] == "return"
puts "Pong"
end