1

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

为什么?为什么我得到的是最小元素列表之一,而不是整个最小元素列表?

4

1 回答 1

3

如果您阅读规范的其余部分:

不带参数和(块/无块),返回 self 中每个(块/方法 <=>)具有最小值的元素:

它返回多个元素的唯一情况是您指定要返回的元素数量:

使用参数 n 和(块/无块),返回一个最多包含 n 个元素的新数组,按每个(块/方法 <=>)升序排列:

[0, 1, 2, 3].min(3) # => [0, 1, 2]
于 2021-12-15T09:27:57.607 回答