相关疑难解决方法(0)

ruby hash autovivification(facets)

这是一个聪明的技巧,在ruby中启用哈希自动修复(取自facet):

  # File lib/core/facets/hash/autonew.rb, line 19
  def self.autonew(*args)
    leet = lambda { |hsh, key| hsh[key] = new( &leet ) }
    new(*args,&leet)
  end
Run Code Online (Sandbox Code Playgroud)

虽然它有效(当然),但我发现我无法弄清楚这两个衬垫是如何做到的.

leet被置为默认值.所以,然后只是h['new_key']以某种方式访问它,并创建'new_key' => {}

现在,我希望h['new_key']返回默认值对象而不是评估它.也就是说,'new_key' => {}不会自动创建.那么leet实际上是如何被调用的呢?特别是有两个参数?

ruby

8
推荐指数
2
解决办法
2464
查看次数

标签 统计

ruby ×1