読者です 読者をやめる 読者になる 読者になる

Ruby1.8.6と1.8.7のHash[*key_and_value]の挙動について

Ruby

Ruby1.8.6でsassがodd number of arguments for Hash (ArgumentError)ってエラー吐いて動かないので調べた。
生成するハッシュのkey,valueに配列が含まれる場合1.8.6だとこのエラーになる。1.8.7は動く

Ruby1.8.6リファレンス

(4) キーや値が配列だと (2) や (3) の方法は使えないので地道に代入するしかない

h = Hash.new
alist = [[1,["a"]], [2,["b"]], [3,["c"]]]
alist.each {|k,v|
  h[k] = v
}
p h  # => {1=>["a"], 2=>["b"], 3=>["c"]}

Ruby1.8.7リファレンス

(4) キーや値が配列の場合

alist = [[1,["a"]], [2,["b"]], [3,["c"]], [[4,5], ["a", "b"]]]
hash = Hash[alist] # => {1=>["a"], 2=>["b"], 3=>["c"], [4, 5]=>["a", "b"]}