On pensait les connaitre, on a découvert des subtilités !
Ces fonctions sont définies dans le module Enumerable
, celui-ci est inclus dans Array
mais aussi Hash
, Range
, Enumerator
, Struct
, …
C’est la méthode <=>
qui est utilisé pour la comparaison. Les éléments doivent être comparables sinon une exception est levée. La comparaison peut être paramétrée avec un bloc. Dans ce cas il est souvent pratique d’utiliser min_by
/ max_by
.
Ces méthodes peuvent être utilisées avec un argument pour obtenir les n plus petits/grands éléments. Il existe même la méthode minmax
!
⚠️ Attention aux limitations du Range
.
Les liens vers la documentation Ruby de min
, max
, min_by
, max_by
, minmax
et minmax_by
.