Ruby 的数组最小返回值,而不是数组



在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]

最新更新