相当于Ruby/Rails中的Array.some

jdzmm42g  于 2023-11-18  发布在  Ruby
关注(0)|答案(2)|浏览(97)

我想在rails中做一些与Array等价的事情。
下面是一个应用于我的用例的例子,它是一个更复杂的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)。

rhfm7lfc

rhfm7lfc1#

JavaScript Array.prototype.some相当于Ruby Escort #any?。

["1", "2", "3"].any? { |x| x.to_i == 2 } #=> true

字符串

epggiuax

epggiuax2#

如果你真的在寻找some?,你可能会想要这样的东西。

module Enumerable
  def some?
    self.any? && !self.all?
  end
end

字符串
这将给予您true只有当一些元素被设置,但不是所有。
点击这里查看代码片段https://coderwall.com/p/wcgj2w

相关问题