加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:36:53 所属栏目:百科 来源:网络整理
导读:这不是一个技巧问题: [1,2,3].sort_by { |x,y| x = y }= [1,3] [1,y| y = x }= [1,3] 这里发生了什么?我原本期望数组彼此相对(因为它们具有排序和相同的参数). 解决方法 #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]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读