【问题标题】:Equivalent to Array.some in ruby/rails等价于 ruby​​/rails 中的 Array.some
【发布时间】:2013-03-26 16:22:01
【问题描述】:

我想在 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,但有一些奇怪的限制,我不太了解元素的顺序。

我错过了什么吗?没有简单的方法吗?我正在使用 ruby​​2 和 rails 4 (edge)。

【问题讨论】:

  • 你能给出输出应该是什么吗?
  • 我将输出添加为代码中的注释。 ary.some 应该在该用例中输出 true

标签: ruby-on-rails ruby arrays


【解决方案1】:

Javascript Array.prototype.some 是 Ruby Enumerable#any?

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

【讨论】:

  • 正是我想要的。我不知道 Enumerable !非常感谢!
【解决方案2】:

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

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

仅当设置了一些元素但不是全部时,这会给你true

在这里查看sn-p https://coderwall.com/p/wcgj2w

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 2011-08-18
    • 2019-03-14
    • 2019-08-15
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多