Предоставить процедуру для метода в виде блока

Допустим, у меня есть следующий массив:

arr = [[5, 1], [2, 7]]

, и я хочу найти минимальный элемент, сравнивая второй элемент элементов. Минимальный элемент будет [5, 1] ​​, поскольку 1 меньше, чем 7 . Я могу использовать следующий код:

arr.min {|a,b| a[1] <=> b[1]}

Для вычисления максимума я могу сделать то же самое:

arr.max {|a,b| a[1] <=> b[1]}

Это дает [2, 7] .

Я использую один и тот же блок все время. Я хотел бы где-нибудь иметь этот блок и передать его функции min / max. Я надеялся, что что-то вроде:

blo = lambda {|a,b| a[1] <=> b[1]}
arr.min blo

сработает, но это не так. Есть идеи, как это сделать?

11
задан sawa 30 December 2015 в 10:39
поделиться