tutorial - lua warframe
Lua=operador como impresiĆ³n (4)
Citando la página man :
En 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.
En Lua, usar el operador = sin un valor l parece ser equivalente a una impresión (valor r), aquí hay algunos ejemplos que se ejecutan en el intérprete independiente de Lua:
> = a
nil
> a = 8
> = a
8
> = ''hello''
hello
> = print
function: 003657C8
Y así...
Mi pregunta es: ¿dónde puedo encontrar una descripción detallada de este uso para el operador =? ¿Como funciona? ¿Implica un valor l predeterminado especial? Creo que la raíz de mi problema es que no tengo 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é razón pasé por alto lo obvio. Debería evitar publicar antes del café de la mañana :-) Para completar, aquí está el código que trata de 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 sobre empujar valores en la pila está en la función "pushline":
if (firstline && b[0] == ''='') /* first line starts with `='' ? */
lua_pushfstring(L, "return %s", b+1); /* change it to `return'' */
Creo que debe ser una característica del intérprete independiente. No puedo hacer que funcione en nada de lo que haya compilado lua.
No lo llamaría una función: 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