2017-02-01 18 views
0

私はRuby 2.4を使用しています。私は別の配列で指定したインデックスの配列から特定の要素を抽出したい場合は、私がRubyで配列の配列に "values_at"を適用するにはどうすればよいですか?

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

'* indexes'は固定されていますか? –

答えて

1

シンボルにprocをパラメータとして使用することはできません。

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 

これでパラメータを渡すことができます。

+0

このパッチを本当に愛しているなら、洗練されたものをロードすることができます。 –

+0

素敵な 'Symbol#with'トリック! –

関連する問題