【问题标题】:How do I sort a Ruby array of strings by length?如何按长度对 Ruby 字符串数组进行排序?
【发布时间】:2011-03-11 11:25:50
【问题描述】:

我该如何排序:

arr = ["aaa","aa","aaaa","a","aaaaa"];

喜欢这个吗?

arr = ["a","aa","aaa","aaaa","aaaaa"];

【问题讨论】:

    标签: ruby sorting arrays


    【解决方案1】:
    arr = arr.sort_by {|x| x.length}
    

    或在 1.8.7+ 中:

    arr = arr.sort_by(&:length)
    

    【讨论】:

    • 很抱歉对这么旧的帖子发表评论,但您能解释一下 &:length 是什么以及它为什么有效吗?它是调用方法长度吗? & 的意义是什么?
    • @DanR 是的,它在sort_by 产生的每个项目上调用方法length - 就像第一行一样。前缀 & 运算符将对象(特别是 Proc 对象或具有 to_proc 方法的任何对象,符号对象执行此操作)转换为块。如果符号将是一个块,它会在其参数上调用具有给定名称的方法(这就是 Symbol#to_proc 的定义方式)。
    【解决方案2】:

    你也可以使用sort:

    arr.sort{|x, y| x.length <=> y.length}
    

    【讨论】:

      【解决方案3】:

      arr = arr.sort{|x,y| x.length - y.length} 也可以。

      【讨论】:

        猜你喜欢
        • 2016-04-23
        • 1970-01-01
        • 1970-01-01
        • 2016-02-09
        • 2013-12-03
        • 1970-01-01
        • 1970-01-01
        • 2015-01-16
        • 1970-01-01
        相关资源
        最近更新 更多