3
Par exemple:Est-il possible de contourner __tostring la façon dont rawget/set contourne __index/__ newindex dans Lua?
local my_table = { name = "my table" }
local my_table_mt = {}
function my_table_mt.__tostring(tbl)
return "%s<%s>":format(tbl.name or "?", rawtostring(tbl))
end
Est-ce quelque chose comme cela possible? Je sais que la méthode rawtostring n'existe pas, mais existe-t-il un moyen d'émuler ce comportement ou de le contourner complètement?
Est-ce thread-safe? – Llamageddon
Lorsque vous manipulez du code qui utilise '__metatable' pour cacher la vraie métatable, n'oubliez pas d'utiliser' debug.getmetatable' à la place de la plaine 'getmetatable'. (Si '__metatable' est gênant et que vous ne pouvez pas utiliser le module' debug' - par exemple dans un environnement restreint - vous n'avez pas de chance.) – nobody
Ce code est totalement sûr dans Lua. Lua n'est pas thread-safe sauf si vous le construisez un verrou global. Utiliser différents états Lua dans différents threads OS – lhf