我有一个清单Fruit
结构体称为basket
. Each Fruit
结构体有一个name
(一个字符串)和一个calories
(一个整数)。我想排序basket
以便:
The Fruit
s 最高的calories
首先出现。例如,500 卡路里的水果出现在 400 卡路里的水果之前。
If two Fruit
s 具有相等的calories
, the Fruit
whose name
按字母顺序排在第一位,忽略大小写。例如,给定两种卡路里相同的水果,一种名为“香蕉”的水果将排在一种名为“柑橘”的水果之前。
的定义Fruit
不是我控制的东西,所以我更喜欢一个不涉及混合任何东西的解决方案Fruit
或改变它。这可能吗?
简单的解决方案是
basket.sort_by { |f| [-f.calories, f.name] }
当然,如果这是the水果的规范排序顺序然后它should被定义为使用<=>
方法并与Comparable
模块混入Fruit
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)