, , - , , , .. , Nicol, .
function defaultdict(default_value_factory)
local t = {}
local metatable = {}
metatable.__index = function(t, key)
if not rawget(t, key) then
rawset(t, key, default_value_factory(key))
end
return rawget(t, key)
end
return setmetatable(t, metatable)
end
:
d = defaultidct(function() return {} end)
table.insert(d["people"], {"Bob", "The Builder"})
names = defaultdict(function(key) return key end)
print(names["bob"]) -- bob
names["bob"] = "bob the builder"
names["ashley"] = "ashley the fire princess"