Array#max_by
は単一の値しか返しませんが、最大値を持つすべての値を取得したいと考えています。メソッド内の&proc引数の使い方
hashes = [{a: 1, b:2}, {a:2, b:3}, {a:1, b:3}]
max = hashes.map{|h| h[:b]}.max
hashes.select{|h| h[:b] == max}
# => [{a: 2, b: 3}, {a: 1, b: 3}]
このコードは正常に動作し、Array
クラスに追加したいと思います。
class Array
def max_values_by(&proc)
max = map(&proc).max
# I don't know how to use `select` here.
end
end
&proc
引数の値にアクセスするにはどうすればよいですか?
::のhttp:/として配列に
や猿、パッチを適用:同じ結果を達成するための別の方法は、このように、
group_by
を使用することです/stackoverflow.com/questions/22115956 – sawaところで、この変数のより一般的な名前は '&block'です。 – Stefan
私は@Stefanに同意します。 'proc'という名前は、ラムダまたは非ラムダProcインスタンスが含まれていると予想されるため、誤解を招きます。 –