From: sawadatsuyoshi@... Date: 2018-09-20T02:27:48+00:00 Subject: [ruby-core:89089] [Ruby trunk Feature#15143] Extend `Enumerrable#to_h` Issue #15143 has been updated by sawa (Tsuyoshi Sawada). I forgot to mention that people alternatively do: ```ruby (1..5).each_with_object({}){|x, h| h[x] = x ** 2} => {1=>1, 2=>4, 3=>9, 4=>16, 5=>25} ``` which may be more optimal than calling `map`. The proposed feature also has the effect of making this technique unnecessary. ---------------------------------------- Feature #15143: Extend `Enumerrable#to_h` https://bugs.ruby-lang.org/issues/15143#change-74106 * Author: sawa (Tsuyoshi Sawada) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- Often, we call `Array#to_h` to the result of `Enumerable#map`: ```ruby (1..5).map{|x| [x, x ** 2]}.to_h #=> {1=>1, 2=>4, 3=>9, 4=>16, 5=>25} ``` I am thinking of a feature to do this in a single method call. Currently, `Enumerable#to_h` does not accept a block. I propose that, when `Enumerable#to_h` is called with a block (that has a subarray representing a key-value pair), return a hash that would be returned by applying the block to `map`, and `to_h` to the result: ```ruby (1..5).to_h{|x| [x, x ** 2]} #=> {1=>1, 2=>4, 3=>9, 4=>16, 5=>25} ``` Ideally, I request this to be done internally to Ruby without creating an intermediate parent array. -- https://bugs.ruby-lang.org/ Unsubscribe: