, поскольку символы не отвечают методу <=>, используемому сортировкой, есть ли у кого-нибудь метод сортировки массива символов?интересно увидеть некоторые другие идеи.
Ну, symbols.sort_by {|sym| sym.to_s} работает.
symbols.sort_by {|sym| sym.to_s}
Также в 1,9 символах do отвечают на <=>, так что вы можете просто сделать symbols.sort.
<=>
symbols.sort
Если вы хотите работать с более старыми рубинами, как если бы они были 1,9, вы можете просто определить <=> для Symbol
class Symbol include Comparable def <=>(other) self.to_s <=> other.to_s end end
Вы можете использовать камень backports:
backports
require 'rubygems' require 'backports/1.9.1/symbol/comparison' [:a, :d, :c, :b].sort # => [:a, :b, :c, :d]