How to create a custom sort method in Ruby

前端 未结 3 1925
死守一世寂寞
死守一世寂寞 2021-02-13 21:54

I want to specify a custom block method to sort an object array by evaluating two properties. However, after many searches, I didn\'t find to any example without the <=

3条回答
  •  南方客
    南方客 (楼主)
    2021-02-13 22:28

    This seems to work:

    # Ascending
    ar.sort! do |a,b|
      (a-b).abs() > 0 ? a-b : 0
    end
    
    # Descending
    ar.sort! do |a,b|
      (a-b).abs() > 0 ? b-a : 0
    end
    

    There's no need for the spaceship operator ( <=> ) - it seems to be superfluous in Ruby (in terms of syntax efficiency), because Ruby considers 0 to be true, and for this usage specifically (above), you can just put the explicit 0 in the ternary operator.

自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题