--- sort_by {|item| ... }   ruby 1.7 feature

    ֥åɾ̤ <=> ᥽åɤӤ뤳Ȥǡself 
    ˥ȤޤȤ줿򿷤֤ޤϡ
    ʲȤۤƱư򤷤ޤ

      def sort_by
        self.collect {|i| [yield(i), i]}.
           sort {|a,b| a[0] <=> b[0]}.
           collect! {|i| i[1]}
      end

    sort_by ȤʤʲǤϡӤԤ٤ downcase 
    Ԥ뤿ᡢdowncase μ¹®٤٤ sort ®٤̿Ū
    ٤ʤޤ

      p ["BAR", "FOO", "bar", "foo"].sort {|a,b| a.downcase <=> b.downcase }

    sort_by Ȥ downcase μ¹ԲǿǤ(Ĥޤꡢ
    ʬ O(n) Υ)

      p ["BAR", "FOO", "bar", "foo"].sort_by {|v| v.downcase}
      => ruby 1.7.1 (2001-08-24) [i586-linux]
         ["BAR", "bar", "FOO", "foo"]

    ʲΡ¹Բθڷ̤򻲾ȤƤߤƤ

      class Integer
        def count
          $n += 1
          self
        end
      end

      ary = []
      1.upto(1000) {|v| ary << rand(v)}

      $n = 0
      ary.sort {|a,b| a.count <=> b.count }
      p $n          # => 18200

      $n = 0
      ary.sort_by {|v| v.count}
      p $n          # => 1000

    Enumerable#sort [Enumerable/sort] Υȥ르ꥺϰ(stable) 
    ǤϤޤ(ӷ̤ƱǤФơνݻʤ
    ȤְǤϤʤפȸޤ)sort_by ȤäưʲΤ褦ˤ뤳
    Ȥ stable sort ¸Ǥޤ

      i = 0
      ary.sort_by {|v| [v, i += 1]}

