Mein Code (psuedo)Wie ein Funktionswert von pcall zurückzukehren() in lua
function foo(cmd)
return load(cmd) --Note that this could cause an error, should 'cmd' be an invalid command
end
function moo()
return "moo"
end
function yoo(something)
something.do()
end
cmd = io.read() --Note that a syntax error will call an error in load. Therefore, I use pcall()
local result, error = pcall(cmd)
print(result)
Dieser Code in Ordnung, und Werke sieht, aber mein Problem ist, wenn ich in moo()
geben zeigen result
wird dann nur, ob oder nicht der Befehl wurde ohne einen Fehler ausgeführt (Wenn der Befehl einen Fehler aufruft, hat error
seinen Wert).
Auf einer anderen Anmerkung, wenn ich yoo()
anrufen will, ich werde nicht einen Rückgabewert von ihm erhalten, so will ich pcall()
‚s true
/false
(oder irgendein alternatives Mittel außer pcall()
)
Gibt es eine alternative Möglichkeit, moo()
aufzurufen, erhalten einen Rückgabewert und auch in der Lage, irgendwelche Fehler zu fangen?
HINWEIS: Ich konnte keine try catch
äquivalenten anderen als pcall
/xpcall
finden.
Der globale Namespace Sie können hier helfen ... Wie wäre es: lokalen Status, Ergebnis = pcall (_G [cmd])? Das "Ergebnis" kann entweder das Funktionsergebnis oder ein Fehler sein, den die Funktion mit dem Funktionsfehler ({alles = 123}) auslöst. –
Um einen zurückgegebenen Wert zu erhalten, sollten Sie 'return moo()' anstelle von 'moo()' –
@EgorSriptunoff eingeben Wie gesagt, dies ist Pseudo-Code. Das größte Problem (das ich dem Edit der Antwort hinzufüge) ist, dass ich einen Rückgabewert haben möchte oder nicht. Es wird eine Vielzahl von Funktionen aufgerufen, von denen einige keinen Rückgabewert haben. – GreenHawk1220