わたなべです. Inaba Hiroto <inaba / st.rim.or.jp> writes: :> h = Hash[* k.each_with_index.collect{|x, j| [x, v[j]]}.flatten] : :こんな書き方もできるんだ、と思って試してみたんですが、 :少なくとも、ruby 1.1b9_11にわたなべさんの[ruby-dev:2387]のpatchを当て :たものでは動かないようなんですが、何が悪いのでしょうか。 たしかに collect_with_index がないと無理ですね. module Enumerable def collect_with_index ary = [] each_with_index do |x, i| ary.push yield(x, i) end ary end end h = Hash[*k.collect_with_index{|x, j| [x, v[j]]}.flatten] 結局 h = Hash[*(0..k.size-1).collect{|i| [k[i], v[i]]}.flatten] でもいいんだけど. module Enumerable def collects ary = [] (0..self[0].size-1).each do |i| ary.push yield(*collect{|x| x[i]}) end ary end end こんなのを作って h = Hash[*[k, v].collects{|x, y| [x, y]}.flatten] ってのはどうかな? x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] w = [x, y, z].collects{|i, j, k| i + j + k} p w [12, 15, 18] なんてのもできるし. 表計算にはよくでてきそうなパターン. -- わたなべひろふみ