按降序对可枚举进行排序
按降序对 Enumerable
进行排序的最佳方法是什么?
我一直在做 @array.sort.reverse
或 @array.sort_by{|song| Song.title }.reverse
我想我可以做类似 @array.sort{|a, b| 的事情b.标题<=> a.title}
,但我发现这很难读而且很冗长。
What's the best way to sort an Enumerable
in descending order?
I've been doing @array.sort.reverse
or @array.sort_by{|song| song.title }.reverse
I suppose I could do something like @array.sort{|a, b| b.title <=> a.title}
, but I find this hard to read and verbose.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Array.reverse
的性能并不是非常差。使用 @array.sort.reverse 的代价是额外的数组重复加上反向操作(n/2 个元素切换)。所以是的,如果你认为读起来更清楚的话,我认为这应该是可以接受的。有关详细信息,请参阅其来源。而且,我认为使用 @array.sort.reverse 确实提供了“稍微”更好的可读性(但无论如何都不难阅读)。
The performance of
Array.reverse
is not very bad. What costs you by using@array.sort.reverse
is an extra array duplication plus the reverse (n/2 element switches). So yes, I think that should be acceptable if you think it's read clearer.See its source for details. And also, I think using
@array.sort.reverse
does provide 'slightly' better readability (but it's not very hard to read any way).我不确定这是否比 Wayne Conrad 的自我描述的“明显的垃圾, " 但您可以将
Enumerable#sort_by_descending
定义为 然后按如下方式调用它:
I'm not sure whether this works any better than Wayne Conrad's self-described "obvious piece of junk," but you could define
Enumerable#sort_by_descending
asThen call it as follows: