Tabelle speichert nur Werte.
Wenn eine Funktion in einer Tabelle gespeichert ist, dann ist es nur ein Funktionskörper, es gibt keine Argumente. Wenn Argumente angewendet würden, würde die Tabelle nur das Endergebnis dieses Aufrufs speichern.
Vielleicht sprechen Sie über Closure - Funktion zurückgegeben von anderen Funktionen, einige Argumente von einer Top-Level-Funktion in einem lexikalischen Abschluss erfassen? Dann siehe debug.getupvalue()
Funktion, um den Inhalt des Abschlusses zu prüfen.
Ist das etwas, was Sie fragen?
local function do_some_action(x,y)
return function()
print(x,y)
end
end
local t = {
func = do_some_action(123,478)
}
-- only function value printed
print "Table content:"
for k,v in pairs(t) do
print(k,v)
end
-- list function's upvalues, where captured arguments may be stored
print "Function's upvalues"
local i = 0
repeat
i = i + 1
local name, val = debug.getupvalue(t.func, i)
if name then
print(name, val)
end
until not name
Beachten Sie, dass gespeicherte upvalues ist nicht notwendig, ein Argument für eine Top-Level-Funktion. Es könnte eine lokale Variable sein, die einen vorberechneten Wert für die innere Funktion speichert.
Beachten Sie auch, dass, wenn Skript in Lua Bytecode vorkompiliert wurde mit dem Entfernen von Debug-Informationen, dann werden Sie upvalues Namen nicht erhalten, diese werden leer sein.
Welches Problem versuchen Sie wirklich zu lösen? – lhf
Es wäre viel klarer, Code zu verwenden, um sich zu erklären. –