加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读