ちょっとコードが汚いんで書き換えました。
変数名も短くしました。
ruby
1# %w[1 2 3]は['1', '2', '3']と同じ
2
3arr1 = [%w[a b], %w[c d], %w[e f]]
4arr2 = [%w[1 2 3], %w[4 5 6], %w[7 8 9]]
5arr1.zip arr2 #=> [[["a", "b"], ["1", "2", "3"]], [["c", "d"], ["4", "5", "6"]], [["e", "f"], ["7", "8", "9"]]]
6# ここまでは理解済み
7
8# それぞれブロック引数にレシーバーの要素が入る
9# ()で囲われた部分は要素1つを取り、分解される
10# (x, y)=>(["a", "b"]), z=>["1", "2", "3"]で要素を取ってx=>"a", y=>"b", z=>["1", "2", "3"]となる
11arr1.zip(arr2).map { |(x, y), z| { x: x, y: y, z: z } }
12#=> [{:x=>"a", :y=>"b", :z=>["1", "2", "3"]}, {:x=>"c", :y=>"d", :z=>["4", "5", "6"]}, {:x=>"e", :y=>"f", :z=>["7", "8", "9"]}]
13
14# 実行結果が配列の要素になる
15arr1.zip(arr2).map do |(x, y), z|
16 [CGI.unescapeHTML(x), CGI.unescapeHTML(y), Time.local(*z)]
17end
18#=> [実行結果1(配列), 実行結果2,...]
19
20# ちなみに
21def disassembly(x, y, z)
22 {x: x, y: y, z: z}
23end
24arr = %w[1 2 3]
25
26disassembly *arr #=> {:x=>"1", :y=>"2", :z=>"3"}
27# 引数に*をつけると分解されて引数になる
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/27 05:15