Je veux utiliser min(5,10)
, ou Math.max(4,7)
. Existe-t-il des fonctions à cet effet dans Ruby?
ruby
enumerable
obuzek
la source
la source
std::max(4, 7)
a plus de "ponctuation" que[4, 7].max
?std::max
peut être importé dans votre espace de noms pour qu'il devienne justemax(4, 7)
. Attendre; en regardant ci-dessus, je vois que je l'ai déjà dit.Vous pouvez utiliser
ou
C'est une méthode pour les tableaux.
la source
Tous ces résultats génèrent des ordures dans une tentative ardente de gérer plus de deux arguments. Je serais curieux de voir comment ils fonctionnent par rapport aux bons vieux:
qui est d'ailleurs ma réponse officielle à votre question.
la source
[a,b].max
, mais il n'est toujours pas clair si c'est plus rapide que l'implémentation ci-dessus. blog.bigbinary.com/2016/11/17/…Si vous avez besoin de trouver le max / min d'un hachage, vous pouvez utiliser
#max_by
ou#min_by
la source
En plus des réponses fournies, si vous souhaitez convertir Enumerable # max en une méthode max pouvant appeler un nombre variable ou des arguments, comme dans certains autres langages de programmation, vous pouvez écrire:
Production:
Cela abuse des propriétés de l'opérateur splat pour créer un objet tableau contenant tous les arguments fournis ou un objet tableau vide si aucun argument n'a été fourni. Dans ce dernier cas, la méthode retournera
nil
, car l'appel de Enumerable # max sur un objet tableau vide retournenil
.Si vous souhaitez définir cette méthode sur le module Math, cela devrait faire l'affaire:
Notez que Enumerable.max est, au moins, deux fois plus lent que l'opérateur ternaire (
?:
) . Voir la réponse de Dave Morse pour une méthode plus simple et plus rapide.la source
la source