9 Stimmen

Auswerten eines Codeblocks in einem Funktionsparameter in Lua

Ich war mir nicht ganz sicher, wie ich die Frage betiteln sollte, aber betrachten Sie den folgenden Lua-Code:

print(function ()
    s = ""
    for i = 1, 10 do
      s = s..tostring(i)
    end
    return s
  end)

Dies gibt jedoch nur die Adresse der Funktion aus, da function() einen Abschluss zurückgibt. Gibt es eine Möglichkeit, die anonyme Funktion auszuwerten? Wie in Schema, wo ich das Lambda in zusätzliche Klammern einschließen kann?

((lambda ()(display "Hello World")))

Natürlich weiß ich, ich könnte die Funktion vorher definieren und später aufrufen, aber ich war nur neugierig, ob dies in Lua möglich ist. Vielen Dank im Voraus für alle Antworten.

14voto

ddk Punkte 1803

Sie müssen die Funktionsdefinition in Klammern einschließen und sie dann aufrufen, indem Sie () nach. Dies wird in den Lua-Interpreter eingefügt:

> print((function ()
    s=""
    for i=1,10 do
       s=s..tostring(i)
    end
    return s
  end)())

ergibt die folgende Ausgabe

> 12345678910

4voto

Puppy Punkte 141483

Wenn Sie ein globales Verhalten wünschen, wäre die einfachste Lösung, print so zu koppeln, dass es alle Funktionen auswertet, die ihm übergeben werden. Auf diese Weise können Sie die Aufrufseiten einfach als Lambdas belassen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X