gpt4 book ai didi

arrays - 使用初始值作为键和 block 来散列数组以生成键值

转载 作者:数据小太阳 更新时间:2023-10-29 07:43:07 25 4
gpt4 key购买 nike

假设我有一个数组:

a = [1, 2, 3]

我想创建一个散列,其中每个数组元素都是一个键,值是一些 block 的输出,这些 block 以每个元素作为 block 变量调用:

{ 1 => 4, 2 => 5, 3 => 6 }

我可以使用 mapto_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, 2=>5, 3=>6}

最佳答案

没有(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}

关于arrays - 使用初始值作为键和 block 来散列数组以生成键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34231900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com