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://stackoverflow.com/questions/22115956. – sawa
BTW, '& block' является более распространенным именем для этой переменной. – Stefan
Я согласен с @Stefan. Использование имени 'proc' вводит в заблуждение, потому что можно ожидать, что он будет содержать экземпляр lambda или non-lambda Proc. –