【问题标题】:Select method with args separated by double-pipes only checking first element... Alternative?使用双管分隔的 args 选择方法仅检查第一个元素...替代?
【发布时间】:2013-12-14 01:54:49
【问题描述】:

我有一些损坏的遗留代码需要修复。它的目的是获取一个大数组并返回具有特定扇区号的元素。

这是应用中代码的简化版本。目标:返回数组中任何 1 或 3 的实例:

array = [1,1,2,2,3,3].select{|num| num == (1 || 3) }

但是当期望的返回是#=> [1, 1, 3, 3]时,返回值只是#=> [1, 1]

基本上,我正在寻找的是与以下 SQL 查询等效的 Ruby:

SELECT num FROM array
WHERE num IN (1, 3);

Ruby 1.8.7,Rails 2.3.15

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-2


    【解决方案1】:

    执行以下操作以满足您的需要:

    array = [1,1,2,2,3,3]
    array.select{|num| [1,3].include? num }
    # => [1, 1, 3, 3]
    

    看看为什么你只有[1,1]

    1 || 3 # => 1
    

    1 || 3 将始终返回 1,因此当 select 仅传递 1 时,num == 1 被评估为 true。结果你得到了[1,1]

    【讨论】:

      猜你喜欢
      • 2017-05-21
      • 2015-04-25
      • 2012-06-29
      • 2022-11-23
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      相关资源
      最近更新 更多