gpt4 book ai didi

ruby - 使用 Ruby 中的属性对对象列表进行排序

转载 作者:数据小太阳 更新时间:2023-10-29 07:09:59 24 4
gpt4 key购买 nike

我有一个名为 basketFruit 结构列表。每个 Fruit 结构都有一个 name(一个字符串)和一个 calories(一个整数)。我想对 basket 进行排序,以便:

  1. 卡路里 最高的水果首先出现。例如,500 卡路里的水果出现在 400 卡路里的水果之前。

  2. 如果两个Fruitcalories相等,则name按字母顺序排在第一位的Fruit首先,忽略大小写。例如,给定两种卡路里相同的水果,一种名为“香​​蕉”的水果将排在另一种名为“柑橘”的水果之前。

Fruit 的定义不是我可以控制的,所以我更喜欢一种不涉及将任何东西混合到 Fruit 或更改它的解决方案。这可能吗?

最佳答案

简单的解决方案是

basket.sort_by { |f| [-f.calories, f.name] }

当然,如果这是水果的规范排序顺序,那么它应该使用<=>定义方法和 Comparable模块混入 Fruit

关于ruby - 使用 Ruby 中的属性对对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/852705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com