Quiero usar min(5,10)
, o Math.max(4,7)
. ¿Hay funciones a este efecto en Ruby?
ruby
enumerable
obuzek
fuente
fuente
std::max(4, 7)
tiene más "puntuación" que[4, 7].max
?std::max
se puede importar a tu espacio de nombres, por lo que simplemente se conviertemax(4, 7)
. Espere; mirando arriba, veo que ya dije eso.Puedes usar
o
Es un método para matrices.
fuente
Todos esos resultados generan basura en un celoso intento de manejar más de dos argumentos. Me gustaría ver cómo funcionan en comparación con el buen ol:
que es, por cierto, mi respuesta oficial a tu pregunta.
fuente
[a,b].max
, pero aún no está claro si es más rápido que la implementación anterior. blog.bigbinary.com/2016/11/17/…Si necesita encontrar el máximo / mínimo de un hash, puede usar
#max_by
o#min_by
fuente
Además de las respuestas proporcionadas, si desea convertir Enumerable # max en un método max que pueda invocar un número variable o argumentos, como en otros lenguajes de programación, puede escribir:
Salida:
Esto abusa de las propiedades del operador splat para crear un objeto de matriz que contenga todos los argumentos proporcionados, o un objeto de matriz vacío si no se proporcionaron argumentos. En el último caso, el método volverá
nil
, ya que devuelve llamar a Enumerable # max en un objeto de matriz vacíonil
.Si desea definir este método en el módulo matemático, esto debería hacer el truco:
Tenga en cuenta que Enumerable.max es, al menos, dos veces más lento en comparación con el operador ternario (
?:
) . Vea la respuesta de Dave Morse para un método más simple y rápido.fuente
fuente