Issue #9239 has been updated by marcandre (Marc-Andre Lafortune). One reason I think I was wrong is that current form could encourage code like: enum.map{|x| [x.foo, x.bar] if x.baz? }.to_h using the fact that any `nil` will be ignored. I'm not sure that it's a good idea. It would probably be safer to raise an Exception for elements that are not a key-value pair. It also satisfies fail-early principle. Matz, what do you think? ---------------------------------------- Feature #9239: Array#to_h ignores flat arrays https://bugs.ruby-lang.org/issues/9239#change-43681 Author: sawa (Tsuyoshi Sawada) Status: Open Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: Target version: =begin My understanding was that the newly introduced `Array#to_h` was to be equivalent to `Hash.[]`. But when I give a flat array, it returns an empty hash: [:a, :b].to_h # => {} [:a].to_h # => {} I expected `{:a => :b}` for the first example, and `ArgumentError: odd number of arguments for Hash` for the second example, as is with `Hash[]`. Was it intended to be different? If so, why is that the case? Even if it is to be different, it should at least raise an error when a flat array is given. =end -- http://bugs.ruby-lang.org/