В дополнение к предоставленным ответам, если вы хотите преобразовать Enumerable # max в метод max, который может вызывать переменное число или аргументы, как в некоторых других языках программирования, вы можете написать:
def max(*values)
values.max
end
Выход:
max(7, 1234, 9, -78, 156)
=> 1234
Это использует свойства оператора splat для создания объекта массива, содержащего все предоставленные аргументы, или пустого объекта массива, если аргументы не были предоставлены. В последнем случае метод вернет nil
, поскольку при вызове Enumerable # max для пустого массива объект возвращает nil
.
Если вы хотите определить этот метод в модуле Math, это должно сработать:
module Math
def self.max(*values)
values.max
end
end
Обратите внимание, что Enumerable.max, по крайней мере, в два раза медленнее по сравнению с троичным оператором (?:
) . См. ответ Дейва Морса для более простого и быстрого метода.