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 符号中做回复<=>
,所以你可以在那里做symbols.sort
。
【讨论】:
在 1.8.7,symbols.sort_by &:to_s
@guns:使用 Symbol#to_proc 对符号进行排序?这一定很讽刺!以上是关于ruby:对符号数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章