September 23, 2007

ruby の Hash に Array みたいな join メソッド

ruby の Hash に Array みたいな join メソッドがあったら便利な状況がきっとあるはず。

#!/usr/bin/env ruby

class Hash
  def join(str1, str2)
    array = []
    self.each{|k, v|
      array << k + str1 + v
    }
    return array.join(str2)
  end
end

hash = {"cat"=>"3", "paged"=>"2"}
puts 'http://jugyo.org/blog/?' + hash.join("=", "&")

#=> http://jugyo.org/blog/?cat=3&paged=2

追記:
もうちょい簡潔に書けた。

class Hash
  def join(str1, str2)
    to_a.collect{|array|
      array.join(str1)
    }.join(str2)
  end
end

No Comments »

TrackBack URI

Leave a comment

※上の項目は入力してもしなくてもよいです。