Pregunta

En Lua, usar el operador = sin un valor l parece ser equivalente a una impresión (valor r), aquí hay algunos ejemplos ejecutados en el intérprete independiente de Lua:

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

Y así sucesivamente ...

Mi pregunta es: ¿dónde puedo encontrar una descripción detallada de este uso para el operador =? ¿Como funciona? ¿Implica un valor-l por defecto especial? Supongo que la raíz de mi problema es que no tengo ni idea de qué escribir en Google para encontrar información al respecto :-)

editar :

Gracias por las respuestas, tiene razón, es una característica del intérprete. Pregunta tonta, porque no sé por qué ignoré completamente lo obvio. Debería evitar publicar antes del café de la mañana :-) Para completar, aquí está el código que trata esto en el intérprete:

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 :

Para estar realmente completo, todo el truco acerca de empujar valores en la pila está en la " línea de empuje " función:

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

Solución

Cotizando la página de manual :

  

En el modo interactivo ... Si una línea comienza con '=', entonces lua muestra los valores de todas las expresiones en el resto de la línea. Las expresiones deben estar separadas por comas.

Otros consejos

Creo que debe ser una característica del intérprete independiente. No puedo hacer que funcione en nada de lo que he compilado en lua.

No lo llamaría característica, el intérprete simplemente devuelve el resultado de la declaración. Es su trabajo, ¿no?

La asignación no es una expresión que devuelve algo en Lua como en C .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top