在Ruby(3.0.1(中,数组上的min
函数
返回以下值之一:
- self的最小值元素
- 从self中选择的最小值元素的新数组
(从这里开始(。
因此,给定
l = [{n: 1, m: 6}, {n: 1, m: 5}, {n: 2, m: 4}, {n: 3, m: 3}, {n: 4, m: 3}]
我希望
l.min { |a, b| a[:n] <=> b[:n] }
=> [{:n=>1, :m=>6}, {:n=>1, :m=>5}]
但我得到了
l.min { |a, b| a[:n] <=> b[:n] }
=> {:n=>1, :m=>6}
为什么?为什么我得到的是最小元素列表中的一个,而不是整个最小元素列表?
如果您阅读了规范的其余部分:
在没有参数和(块/无块(的情况下,返回self中具有最小值的元素per(块/方法<=>(:
当它返回多个元素时,唯一的情况是如果您指定了要返回的元素数量:
使用参数n和(块/无块(,返回一个最多包含n个元素的新数组,按(块/方法<=>(升序排列:
[0, 1, 2, 3].min(3) # => [0, 1, 2]