配列を反復処理し、提供されたブロックを各要素に適用し、ブロックから返された最初の真の値を返す必要があります。これは、真の値を取得したらすぐに停止する必要があることを意味します。
以下は私のコードです。私は Ruby の初心者であり、このコードが車輪の再発明であるかどうかはわかりません。おそらく、すでにそれを行うことができるライブラリメソッドまたはメソッドがありますか? それとも、このコードを単純化できるのでしょうか?
RS = {
:x => %w(\d+ a\d+ bb\d+ ccc\d+).map{|x| /^#{x}$/},
:y => %w(\w+ 1\w+ 22\w+ 333\w+).map{|x| /^#{x}$/}
}.freeze
def find s, t
r = RS[s]
if r
r.each do |p|
m = p.match t
return m if m
end
nil
end
end
p find :x, 'bb12345'