|
Ignacio Burgueño wrote:
Would this be safe? local user = inconcert.authUser or {languageId=14346, codepage="UTF-8"} local temp = translators[key] or {} -- get a strong reference to the -- elements in the weak tabletranslators[key] = templocal translator = temp[user.languageId] if not translator then translator = i18nlib.Translator{(arguments omitted)} temp[user.languageId] = translator end return translator
That'd be safe, but I think you accidentally commented out a required line? (Indicated).
You could even just add this one line: mt.__index = function(tab, key) local user = inconcert.authUser or {languageId=14346, codepage="UTF-8"} translators[key] = translators[key] or {}--> local temp = translators[key] -- keep a strong reference to the table for this call
local translator = translators[key][user.languageId] if not translator then translator = i18nlib.Translator{(arguments omitted)} translators[key][user.languageId] = translator end return translator endI wonder if LuaJit 2.x would incorrectly optimise the temp variable away =/? I'm guessing not, as the gc only runs in interpreted mode, but still interesting.
- Alex