Question

Dans Lua, utiliser l'opérateur = sans valeur l semble être équivalent à une empreinte (valeur r), voici quelques exemples exécutés dans l'interpréteur autonome Lua:

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

Et ainsi de suite ...

Ma question est la suivante: où puis-je trouver une description détaillée de cette utilisation pour l'opérateur =? Comment ça marche? Est-ce en impliquant une valeur l par défaut spéciale? Je suppose que la racine de mon problème est que je ne sais pas quoi taper dans Google pour trouver des informations à ce sujet: -)

modifier :

Merci pour les réponses, vous avez raison, c’est une fonctionnalité de l’interprète. Question idiote, car je ne sais pas pour quelle raison j'ai complètement oublié l'évidence. Je devrais éviter de poster avant le café du matin :-) Pour être complet, voici le code traitant de cela dans l'interprète:

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)));
  }
}

modifier2 :

Pour être vraiment complet, toute l’astuce sur l’ajout de valeurs dans la pile se trouve dans la "pushline". fonction:

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

La solution

Citation de la page de manuel :

  

En mode interactif ... Si une ligne commence par '=', lua affiche les valeurs de toutes les expressions dans le reste de la ligne. Les expressions doivent être séparées par des virgules.

Autres conseils

Je pense que cela doit être une caractéristique de l'interprète autonome. Je ne peux pas faire en sorte que cela fonctionne avec quoi que ce soit dans lequel j'ai compilé lua.

Je n'appellerais pas cela une fonctionnalité - l'interprète renvoie simplement le résultat de la déclaration. C'est son travail, n'est-ce pas?

Une assignation n'est pas une expression qui renvoie quelque chose dans Lua comme dans C .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top