Pergunta

Lua, usando o operador = sem um l-valor parece ser equivalente a um impressão (valor r), seguem-se alguns exemplos executar no interpretador independente Lua:

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

E assim por diante ...

A minha pergunta é: onde posso encontrar uma descrição detalhada deste uso para o operador =? Como funciona? É por implicando um padrão l-valor especial? Eu acho que a raiz do meu problema é que eu não tenho idéia o que digitar no Google para encontrar informações sobre ele: -)

Editar :

Obrigado pelas respostas, você está certo, é uma característica do intérprete. Pergunta boba, porque eu não sei qual razão eu esquecido completamente o óbvio. I deve evitar postagem antes do café da manhã :-) Para completar, aqui é o tráfico de código com este no interpretador:

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 ser realmente completa, todo o truque sobre empurrar valores na pilha está na função "pushline":

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

Solução

página homem :

No modo interativo ... Se uma linha começa com '=', então Lua exibe os valores de todas as expressões no restante da linha. As expressões devem ser separados por vírgulas.

Outras dicas

Eu acho que deve ser uma característica do sozinha intérprete suporte. Eu não posso fazer esse trabalho em qualquer coisa eu compilei lua em.

Eu não chamaria isso de um recurso - o intérprete apenas retorna o resultado da instrução. É o trabalho dele, não é?

Assignment não é uma expressão que retorna algo em Lua como é em C.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top