gpt4 book ai didi

php - 在 Ruby 中是否可以自动初始化多维哈希数组,就像在 PHP 中一样?

转载 作者:可可西里 更新时间:2023-11-01 13:58:06 27 4
gpt4 key购买 nike

<分区>

我习惯于在 PHP 中使用多维数组,在这里我可以通过以下方式分配和初始化哈希

unset($a); // just to show that there is no variable $a
$a['settings']['system']['memory'] = '1 Gb';
$a['settings']['system']['disk space'] = '100 Gb';

有没有办法在 Ruby 中做类似的事情?或者我需要先初始化所有维度,然后再赋值。是否可以定义一个高级哈希来执行我需要的操作?你会怎么做?


更新

除了 Douglas 提出的解决方案(见下文)外,我还找到了一个 thread on the subject ,其中 Brian Schröäer 提出了 Hash 类的扩展:

class AutoHash < Hash
def initialize(*args)
super()
@update, @update_index = args[0][:update], args[0][:update_key] unless args.empty?
end

def [](k)
if self.has_key?k
super(k)
else
AutoHash.new(:update => self, :update_key => k)
end
end

def []=(k, v)
@update[@update_index] = self if @update and @update_index
super
end
end

它允许解决当仅请求项目值时意外创建丢失的哈希项目时的问题,例如一个['key']


一些额外的引用资料

  1. ruby hash autovivification (facets)
  2. http://trevoke.net/blog/2009/11/06/auto-vivifying-hashes-in-ruby/
  3. http://www.eecs.harvard.edu/~cduan/technical/ruby/ycombinator.shtml

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