arrays – 使用初始值作为键来散列数组,使用块来生成键值
发布时间:2020-12-17 01:43:10 所属栏目:百科 来源:网络整理
导读:说我有一个数组: a = [1,2,3] 我想创建一个散列,其中每个数组元素都是一个键,并且值是一个块的输出,使用这些元素中的每一个作为块变量调用: { 1 = 4,2 = 5,3 = 6 } 我可以使用map和to_h来做到这一点: a.map{ |n| [n,n + 3] }.to_h#= {1=4,2=5,3=6} 有没有
说我有一个数组:
a = [1,2,3] 我想创建一个散列,其中每个数组元素都是一个键,并且值是一个块的输出,使用这些元素中的每一个作为块变量调用: { 1 => 4,2 => 5,3 => 6 } 我可以使用map和to_h来做到这一点: a.map{ |n| [n,n + 3] }.to_h #=> {1=>4,2=>5,3=>6} 有没有一种方法可以做到这一点?例如,如果它被称为hash_with,我将能够写: a.hash_with{|n| n + 3} #=> {1=>4,3=>6} 解决方法
没有(Ruby缺乏将Enumerables变为Hashes的方法),但编写自己的方法非常简单:
module Enumerable def hash_with each_with_object({}) {|elm,hsh| hsh[elm] = yield(elm) } end end [1,3].hash_with {|n| n + 3 } # => { 1 => 4,3 => 6 } ('a'..'e').hash_with(&:upcase) # => { "a" => "A","b" => "B","c" => "C","d" => "D","e" => "E" } (:A..:E).hash_with { rand 100 } # => { A: 28,B: 67,C: 58,D: 12,E: 20} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |