ruby:对符号数组进行排序

Posted

技术标签:

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

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

【问题讨论】:

您应该记住,符号不是字符串,而是具有漂亮名称的数字。我将您的问题理解为如何按object_id 对符号进行排序 我不能肯定地说,但如果你按字母顺序对符号进行排序,你可能做错了什么。 【参考方案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 对符号进行排序?这一定很讽刺!

以上是关于ruby:对符号数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中,如何对包含重音符号的数据框进行排序?

PHP 等价于 Ruby 符号

ruby里面的=~标识啥

如何在Ruby中按降序对数组进行排序

Java:如何以相反的顺序对浮点数组进行排序?

ruby 符号作为键,但无法从哈希中获取值