当前位置:  开发笔记 > 后端 > 正文

使用初始值作为键来散列数组,使用块来生成键值

如何解决《使用初始值作为键来散列数组,使用块来生成键值》经验,为你挑选了2个好方法。



1> Jordan Runni..:

没有(Ruby缺乏将Enumerables变为Hashes的方法),但编写自己的方法非常简单:

module Enumerable
  def hash_with
    each_with_object({}) {|elm, hsh| hsh[elm] = yield(elm) }
  end
end

[1,2,3].hash_with {|n| n + 3 }
# => { 1 => 4, 2 => 5, 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}



2> the Tin Man..:

看看each_with_object.

文档的示例:

evens = (1..10).each_with_object([]) { |i, a| a << i*2 }
#=> [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

在该示例中,他们使用的是数组,[]但您可以轻松地使用哈希{}并将内容填充到其中:

hash = [1,2,3].each_with_object({}) { |i, h| h[i] = i + 3 } # => {1=>4, 2=>5, 3=>6}

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有