En Ruby (3.0.1) la función min en una matriz
Devuelve uno de los siguientes:
- El elemento de valor mínimo de uno mismo.
- Una nueva matriz de elementos de valor mínimo seleccionados de uno mismo.
(desde aquí ).
Entonces, dado
l = [{n: 1, m: 6}, {n: 1, m: 5}, {n: 2, m: 4}, {n: 3, m: 3}, {n: 4, m: 3}]Yo esperaría
l.min { |a, b| a[:n] <=> b[:n] } => [{:n=>1, :m=>6}, {:n=>1, :m=>5}]pero en cambio obtengo
l.min { |a, b| a[:n] <=> b[:n] } => {:n=>1, :m=>6}¿Por qué? ¿Por qué obtengo uno de la lista de elementos mínimos en lugar de la lista completa de elementos mínimos?
Si lees el resto de las especificaciones:
Sin argumento y (un bloque/sin bloque), devuelve el elemento en sí mismo que tiene el valor mínimo por (el bloque/método <=>):
El único caso en que devuelve más de un elemento es si especifica la cantidad de elementos que desea devolver:
Con un argumento n y (un bloque/sin bloque), devuelve un nuevo Array con un máximo de n elementos, en orden ascendente por (el bloque/método <=>):
[0, 1, 2, 3].min(3) # => [0, 1, 2]