-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

なぜ2回チェックするのですか?あなたは以下のような簡単な方法でそれを行うことができます:

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 に答える