Von der Programmierung in Lua Buch 3. Auflage Seite 38Warum können Gotos in Lua nicht aus Funktionen springen?
Aufgabe 4.5: Können Sie erklären, warum Lua die Einschränkung, dass ein
goto
kann nicht aus einer Funktion springen hat? (Hinweis: Wie würden Sie diese Funktion implementieren)
Ich habe ein paar Vermutungen, warum es so sein:
- Wenn Sie von einer Funktion in die andere springen und die zweite zurückkehrt, Wohin geht der PC?
- Wenn Sie haben, aber f eine
goto
nach dieser Zeile Code tut, was ist der Wert vona
? - Ist es nicht möglich, ein Standardverhalten aufgrund der Aufrufkonventionen der verschiedenen Plattformen zu definieren?
Ich frage mich, wie der Autor diese Frage beantworten würde. Vielleicht schicke ich ihm eine E-Mail.
Hat in der Zwischenzeit jemand andere Ideen?
Ich denke, es ist [wegen der Velociraptoren] (http://xkcd.com/292/). – Renan
Plattformprobleme sollten keine Rolle spielen. Lua wird nicht nur in ANSI C implementiert, sondern Lua-Funktionen verwenden den C-Stack nicht für ihre Stack-Frames (dies ist notwendig, um Coroutinen portabel implementieren zu können). Ansonsten bist du auf dem richtigen Weg - mach dir keine Sorgen über die Suche nach einer kanonischen Antwort, denn es gibt viele Gründe, gotos so einzuschränken. – hugomg