这是一个聪明的技巧,在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 ×1