我需要迭代數組並將所提供的塊應用於每個元素,並返回該塊返回的第一個真值,這意味着我需要立即停止,只要我得到真正的價值。找到數組中的第一個元素,其中塊返回true並返回塊的返回值
下面是我的代碼。我是一個紅寶石新手,我不確定這個代碼是否會重新發明輪子。也許有一個庫方法可以做到這一點?或者可能是這段代碼可以簡化?
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'
你正在尋找的東西像['可枚舉#find'(HTTP:// ruby- doc.org/core-2.0/Enumerable.html#method-i-find)返回塊返回的內容而不是哪個元素導致塊返回真值? – 2013-03-14 21:24:20
@ muistooshort,是的,謝謝 – akonsu 2013-03-14 22:32:47
我認爲你正在做的是關於所有的事情。你可以把它修改得很好,猴子將它修改爲Enumerable,但這就是它。 – 2013-03-14 23:20:59