Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
ルビースクリプトに次のブロックがあります。
for line in allLines line.match(/aPattern/) { |matchData| # Do something with matchData } end
/aPattern/何も一致しない場合でも、ブロックは実行されますか?そうでない場合は、強制的に実行する方法はありますか?
/aPattern/
答えはノーです。試合が成功しなかった場合、試合ブロックは実行されません。ただし、for一般的にRubyでは使用されませんがeach、次のように慣用的です。
for
each
allLines.each do |line| if line =~ /aPattern/ do_thing_with_last_match($~) ## $~ is last match else do_non_match_thing_with_line end end
=~は、正規表現の一致演算子であることに注意してください。
=~