Kyl*_*tan 5 ruby sorting idioms
我有一个Fruit名为的结构列表basket.每个Fruit结构都有一个name(一个字符串)和一个calories(一个整数).我想这样排序basket:
Fruit最高的s calories首先出现.例如,含400卡路里的水果出现在400卡路里的水果之前.
如果两个Fruit■找相等calories,则Fruit其name是第一位字母是第一位的,不区分大小写.例如,给定两个具有相同卡路里的水果,一个名为"香蕉"的水果将在一个名为"柑橘"之前出现.
定义Fruit不是我控制的,所以我更喜欢一种不涉及混合Fruit或改变它的解决方案.这可能吗?
Gar*_*eth 12
简单的解决方案是
basket.sort_by { |f| [-f.calories, f.name] }
Run Code Online (Sandbox Code Playgroud)
当然,如果这是水果的规范排序,则应使用该<=>方法并将Comparable模块混合到其中进行定义Fruit
| 归档时间: |
|
| 查看次数: |
10849 次 |
| 最近记录: |