【问题标题】:ruby: sort array of symbolsruby:对符号数组进行排序
【发布时间】:2011-05-07 00:07:12
【问题描述】:

由于符号不响应 sort 使用的 方法,有没有人有技术对符号数组进行排序?有兴趣了解其他一些想法。

【问题讨论】:

  • 您应该记住,符号不是字符串,而是具有漂亮名称的数字。我将您的问题理解为如何按object_id 对符号进行排序
  • 我不能肯定地说,但如果你按字母顺序对符号进行排序,你可能做错了什么。

标签: ruby-on-rails ruby sorting symbols


【解决方案1】:

您可以使用backports gem:

require 'rubygems'
require 'backports/1.9.1/symbol/comparison'
[:a, :d, :c, :b].sort
# => [:a, :b, :c, :d]

【讨论】:

    【解决方案2】:

    如果您想像使用 1.9 一样处理较旧的 rubies,您可以在 Symbol 上定义

    class Symbol
      include Comparable
    
      def <=>(other)
        self.to_s <=> other.to_s
      end
    end
    

    【讨论】:

    • 这个很棒的答案太棒了。
    【解决方案3】:

    好吧,symbols.sort_by {|sym| sym.to_s} 有效。

    同样在 1.9 符号中回复&lt;=&gt;,所以你可以在那里做symbols.sort

    【讨论】:

    • 在 1.8.7,symbols.sort_by &amp;:to_s
    • @guns:使用 Symbol#to_proc 对符号进行排序?这一定很讽刺!
    猜你喜欢
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    相关资源
    最近更新 更多