我使用的是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
此外,我希望结果是一个新对象,而不是修改原始对象。
答案 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
这样你可以传递参数。