ハッシュのソート
Hash#sort (実際は Enumerable)は、デフォルトで "ORDER BY key" だと嬉しい。よくやる操作だから。
#!/usr/bin/ruby class Symbol def <=> b self.to_s <=> b.to_s end end class Hash alias :default_sort :sort def sort &b unless b.nil? self.default_sort &b else self.to_a.sort { |a,b| a[0] <=> b[0] } end end end h = { :e => 1, :d => 2, :c => 3, :b => 4, :a => 5, } if __FILE__ == $0 puts "Not sorted" h.each do |k,v| puts "\t" + [k,v].join(": ") end puts "ORDER BY key" h.sort.each do |k,v| puts "\t" + [k,v].join(": ") end puts "ORDER BY val" h.sort{|a,b| a[1] <=> b[1]}.each do |k,v| puts "\t" + [k,v].join(": ") end end
Symbol の <=> も標準であると嬉しいかも。1.9 とか知らん。