在 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}
為什么?為什么我得到的是最小元素串列之一,而不是整個最小元素串列?
uj5u.com熱心網友回復:
如果您閱讀了規范的其余部分:
沒有引數和(塊/無塊),回傳 self 中具有最小值 per(塊/方法 <=>)的元素:
它回傳多個元素的唯一情況是,如果您指定要回傳的元素數量:
使用引數 n 和(塊/無塊),回傳一個最多包含 n 個元素的新陣列,按每個(塊/方法 <=>)的升序排列:
[0, 1, 2, 3].min(3) # => [0, 1, 2]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/383473.html
