我想在 Rails 中做相当于 Array.some 的操作。
这是一个应用于我的用例的示例,它有点复杂include?
(我想将其应用于*args
):
ary = [:a, :b, :c, d: :x, e: :y] # => [:a, :b, :c, { :d => :x, :e => :y }]
search = :e
contained = ary.some { |x|
x == search || x.try(:key?, search)
} # => true
assert contained, "We should have found #{search}"
我可以这样做,ary.map
但这意味着遍历整个数组,然后再次测试它的内容。我也可以使用ary.drop_while
并验证它是否返回一个空数组,但我需要再次测试结果。我也见过ary.bsearch
,但有一些奇怪的限制,我不太了解元素的顺序。
我错过了什么吗?有没有简单的方法可以做到这一点?我正在使用 ruby2 和 rails 4 (edge)。