我需要遍历一个数组并将提供的块应用于每个元素,并返回该块返回的第一个真值,这意味着我需要在获得真值后立即停止。
下面是我的代码。我是一个红宝石新手,我不确定这段代码是否在重新发明轮子。也许已经有一个或多个库方法可以做到这一点?还是可以简化此代码?
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'