微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby – sort和sort_by之间的细微差别

这不是一个技巧问题:
[1,2,3].sort_by { |x,y| x <=> y }
=> [1,3] 

[1,y| y <=> x }
=> [1,3]

这里发生了什么?我原本期望数组彼此相对(因为它们具有排序和相同的参数).

解决方法

#sort_by应该只取一个块参数,一个来自数组的项,并根据块的结果进行排序.

当将两个块参数传递给它时,第二个被设置为nil,因此所有块结果都是1< =>. nil为nil,因此数组的顺序不变.

[1,3,2].sort_by { |x| x } # sorts using x <=> y
=> [1,3]

[1,2].sort_by { |x,y| x <=> y } # sorts using nil <=> nil
=> [1,2]

原文地址:https://www.jb51.cc/ruby/269524.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐