我如何申请" values_at" Ruby中的数组数组?

时间:2017-02-01 19:46:58

标签: arrays ruby each

我使用的是Ruby 2.4。如果我想从我在另一个数组中指定的索引中从数组中提取某些元素,我可以

2.4.0 :012 > arr.values_at(*indexes)
 => ["a", "e", "g"] 

但是如果我有一个数组数组,那么如何将上面的数组应用到数组中的每个数组?我试过这个

2.4.0 :014 > arr_of_arrays.map( &values_at(*indexes) )
NoMethodError: undefined method `values_at' for main:Object

此外,我希望结果是一个新对象,而不是修改原始对象。

1 个答案:

答案 0 :(得分:1)

您不能使用符号来处理参数。

arr_of_arrays.map { |a| a.values_at(*indexes) }

一种可能的解决方法是修改Symbol类,但这种做法非常不受欢迎。

class Symbol
  def with(*args, &block)
    ->(caller, *rest) { caller.send(self, *rest, *args, &block) }
  end
end

这样你可以传递参数。