From: "hsbt (Hiroshi SHIBATA)" Date: 2012-11-10T07:43:54+09:00 Subject: [ruby-dev:46470] [ruby-trunk - Bug #7300] Hash#[] の挙動が 1.9.3 と異なっている Issue #7300 has been updated by hsbt (Hiroshi SHIBATA). redis-rb という ruby から redis を扱うライブラリにも同じコードがありました。 https://github.com/redis/redis-rb/blob/master/lib/redis.rb#L182 redis-rb では [nil, ["redis_version", "2.6.4"], ...] というような配列を Hash[] に渡して初期化しようとして落ちています。 配列が nil だけの時の [nil, nil, ...] に加えて [nil, ["valid", "valid"], ...] みたいな一部だけ nil というような配列の時でも警告をして通すような変更だと助かります。 ---------------------------------------- Bug #7300: Hash#[] の挙動が 1.9.3 と異なっている https://bugs.ruby-lang.org/issues/7300#change-32725 Author: hsbt (Hiroshi SHIBATA) Status: Assigned Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: core Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2012-11-07) [x86_64-darwin12.2.0] Hash[[nil]] を実行すると 1.9.3 では {} となるものが 2.0.0 では ArgumentError となります。 なかださんに相談してみたら、2.0.0 の動きが不正なものをチェックしてて正しい挙動と いうことを教えてもらいましたが、2.0.0 では duplicate の警告だけにして、 次のリリースで消すという方が良さそうに思います。 -- http://bugs.ruby-lang.org/