原です。 > > |[k[0], v[0],... k[n], v[n]] が帰ってくる method x があれば > > |h = Hash[*k.x(v)] ですんじゃうけど. > > > > h = Hash[* k.each_with_index.collect{|x, j| [x, v[j]]}.flatten] > > こんな書き方もできるんだ、と思って試してみたんですが、 > > 少なくとも、ruby 1.1b9_11にわたなべさんの[ruby-dev:2387]のpatchを当て > たものでは動かないようなんですが、何が悪いのでしょうか。 これ、私の勘違いです。 h = Hash[* k.collect_with_index{|x, j| [x, v[j]]}.flatten] のつもりだったんだけど collect_with_index というメソッドは無いので、 大嘘でした。ごめんなさい。 module Enumerable def collect_with_index a = [] each_with_index do |x, i| a << yield(x, i) end a end end これは最初のわたなべさんの方法とほとんどおなじだ。(^^; Enumerable のメソッドの多くは「with_index 化」できるなあ、と考えて いて勘違いしてしまいました。一々メソッドを作らずにする with_index 化するいいやり方って無いかしら。