gpt4 book ai didi

Ruby:下面的 "sort"方法有没有更好的写法?

转载 作者:太空宇宙 更新时间:2023-11-03 18:30:46 24 4
gpt4 key购买 nike

是否有更好(和等效)的方式来对这样的项目进行排序?

 items.sort! do |p1, p2|
if (p1.foo == p2.foo)
if (p1.bar == p2.bar)
if (p1.moo == p2.moo)
p1.wow <=> p2.wow # Ascending order
else
p2.sam.moo <=> p1.sam.moo # Descending order, 2 levels attribute
end
else
p2.bar <=> p1.bar # Descending order
end
else
p1.foo <=> p2.foo # Ascending order
end
end

最佳答案

可以将对象转成数组进行比较

[p1.foo, p1.bar, p1.moo, p1.sam.moo] <=> [p2.foo, p2.bar, p2.moo, p2.sam.moo]

数组就像字符串一样进行比较:通过第一个不同的元素。

如果某些比较中的倒排索引 (p2.bar <=> p1.bar) 不是拼写错误,您也需要切换数组元素。

或者你可以在你的类中覆盖比较运算符

  def <=>(p2)
...
end

在这种情况下,您不需要在 items.sort! 中传递任何内容.

关于Ruby:下面的 "sort"方法有没有更好的写法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4622031/

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