Я хочу использовать min(5,10)
, или Math.max(4,7)
. Есть ли функции на этот счет в Ruby?
ruby
enumerable
obuzek
источник
источник
std::max(4, 7)
имеет больше "пунктуации", чем[4, 7].max
?std::max
можно импортировать в ваше пространство имен, чтобы оно просто сталоmax(4, 7)
. Подождите; глядя выше, я вижу, что уже сказал.Ты можешь использовать
или
Это метод для массивов.
источник
Все эти результаты создают мусор в ревностной попытке обработать более двух аргументов. Мне было бы любопытно посмотреть, как они работают по сравнению с хорошими оль:
кстати, мой официальный ответ на ваш вопрос.
источник
[a,b].max
, но все еще неясно, быстрее ли это, чем приведенная выше реализация. blog.bigbinary.com/2016/11/17/…Если вам нужно найти максимум / мин хеша, вы можете использовать
#max_by
или#min_by
источник
В дополнение к предоставленным ответам, если вы хотите преобразовать Enumerable # max в метод max, который может вызывать переменное число или аргументы, как в некоторых других языках программирования, вы можете написать:
Вывод:
Это нарушает свойства оператора splat для создания объекта массива, содержащего все предоставленные аргументы, или пустого объекта массива, если аргументы не были предоставлены. В последнем случае метод вернется
nil
, так как вызов Enumerable # max для пустого объекта массива возвращаетnil
.Если вы хотите определить этот метод в модуле Math, это должно помочь:
Обратите внимание, что Enumerable.max, по крайней мере, в два раза медленнее по сравнению с троичным оператором (
?:
) . Смотрите ответ Дейва Морса для более простого и быстрого метода.источник
источник