Ich möchte eine write-once-Tabelle in Lua haben (luajit 2.0.3 speziell), so dass:Write-once-Tabelle in lua?
local tbl = write_once_tbl()
tbl["a"] = 'foo'
tbl["b"] = 'bar'
tbl["a"] = 'baz' -- asserts false
Idealerweise diese sonst wie eine normale Tabelle funktionieren würde (Paare() und ipairs () Arbeit).
__newindex ist im Grunde das Gegenteil von dem, was ich für die einfache Implementierung erreichen möchte, und ich kenne keine Techniken, um ein Proxy-Tabellenmuster mit pairs() und ipairs() arbeiten zu lassen.
Ich kenne Proxy-Tabellen, aber sie arbeiten * nicht * mit Paaren() oder ipairs(). Ich habe gerade Ihr Code-Snippet ausprobiert und verifiziert, dass pairs() und ipairs() nicht damit arbeiten. – MikeMx7f
@ MikeMx7f, sie tun in Lua 5.2 und 5.3. – lhf
Ich habe Ihr Code-Snippet hier getestet: https://www.lua.org/cgi-bin/demo welches Lua 5.3 verwendet. – MikeMx7f