Frage

In Lua, mit dem Operator = ohne l-Wert scheint auf einen Druck (r-Wert) gleichwertig ist, sind hier ein paar Beispiele in dem Lua Standalone-Interpreter ausführen:

> = a
nil
> a = 8
> = a
8
> = 'hello'
hello
> = print
function: 003657C8

Und so weiter ...

Meine Frage ist: wo finde ich eine detaillierte Beschreibung dieser Verwendung für den Operator = finden? Wie funktioniert es? Ist es durch einen speziellen Standard-l-Wert impliziert? Ich denke, die Wurzel meines Problems ist, dass ich keine Ahnung, was in Google eingeben Informationen über sie zu finden: -)

Bearbeiten :

Danke für die Antworten, sind Sie Recht, es ein Merkmal des Dolmetschers ist. Dumme Frage, denn ich weiß nicht, welchen Grund vollständig ich das Offensichtliche übersehen. Ich soll Posting vor dem Morgenkaffee :-) Für Vollständigkeit vermeiden, hier ist der Code mit diesem in dem Interpreter zu tun:

while ((status = loadline(L)) != -1) {
  if (status == 0) status = docall(L, 0, 0);
  report(L, status);
  if (status == 0 && lua_gettop(L) > 0) {  /* any result to print? */
    lua_getglobal(L, "print");
    lua_insert(L, 1);
    if (lua_pcall(L, lua_gettop(L)-1, 0, 0) != 0)
      l_message(progname, lua_pushfstring(L,
                           "error calling " LUA_QL("print") " (%s)",
                           lua_tostring(L, -1)));
  }
}

edit2 :

Um wirklich vollständig zu sein, der ganze Trick über Werte auf dem Stapel drückt, ist in der „pushline“ Funktion:

if (firstline && b[0] == '=')  /* first line starts with `=' ? */
  lua_pushfstring(L, "return %s", b+1);  /* change it to `return' */
War es hilfreich?

Lösung

Zitiert die Manpage :

  

Im interaktiven Modus ... Wenn eine Zeile beginnt mit ‚=‘, dann zeigt lua die Werte aller Ausdrücke in dem Rest der Zeile. Die Ausdrücke müssen durch Kommas getrennt werden.

Andere Tipps

Ich denke, dass ein Merkmal der Stand-alone-Interpreter sein muss. Ich kann es nicht, dass die Arbeit auf etwas mache ich lua in zusammengestellt.

Ich würde es kein Merkmal nennen - der Interpreter gibt nur das Ergebnis der Anweisung. Es ist seine Aufgabe, es ist nicht wahr?

Die Zuordnung ist nicht ein Ausdruck, der etwas in Lua zurück, wie es in C ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top