-1

这是我的代码

pong = /return/.match(cap.array[0])
if pong == "return"
  puts "Pong"
end

cap.array[0]/return/正如您在我使用时看到的那样,绝对匹配pp

#<MatchData "return">

但由于某种原因,该if语句没有触发。任何想法为什么它不匹配?我试过=====认为这可能是一个类型问题,但没有快乐。

4

2 回答 2

3

为什么要两次检查??您可以通过以下简单方式进行操作:

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

所以你可以避免多次检查

于 2013-01-31T12:40:24.163 回答
1

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
于 2013-01-31T12:16:25.160 回答