From: "trans (Thomas Sawyer)" Date: 2013-09-04T11:15:01+09:00 Subject: [ruby-core:57002] [ruby-trunk - Feature #7292] Enumerable#to_h Issue #7292 has been updated by trans (Thomas Sawyer). =begin @matz How does it "destroy common case"? [ [:a,1], [:b,2], [:c,3] ].to_h #=> {:a=>1, :b=>2, :c=>3} Would work just fine. That was my first example case. The next two show what other basic conversions of assoc array to hash there can be. And the "consistent" case you mention certainly can be useful. So my suggestion was to have a parameter, e.g. class Array def to_h(type=nil) h = {} if type.nil? each{ |k, v, *| h[k] = v } elsif type == :array each{ |k, *v| h[k] = v } elsif type == :ones each{ |k, *v| h[k] = v.size > 1 ? v : v[0] } else raise ArgumentError, "unknown conversion type for Array#to_h -- `#{type}'" end h end That way all are possible. =end ---------------------------------------- Feature #7292: Enumerable#to_h https://bugs.ruby-lang.org/issues/7292#change-41596 Author: marcandre (Marc-Andre Lafortune) Status: Open Priority: Normal Assignee: marcandre (Marc-Andre Lafortune) Category: core Target version: next minor Now that #to_h is the official method for explicit conversion to Hash, we should also add Enumerable#to_h: Returns a hash for the yielded key-value pairs. [[:name, 'Joe Smith'], [:age, 42]].to_h # => {name: 'Joe Smith', age: 42} With the Ruby tradition of succint documentation I suggest the documentation talk about key-value pairs and there is no need to be explicit about the uninteresting cases like: (1..3).to_h # => {1 => nil, 2 => nil, 3 => nil} [[1, 2], [1, 3]].to_h # => {1 => 3} [[1, 2], []].to_h # => {1 => 2, nil => nil} I see some reactions of people reading about the upcoming 2.0 release like this one: http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/#dsq-comment-body-700242476 -- http://bugs.ruby-lang.org/