2017-08-08 1 views
1

Je le code Lua pour initialiser une table:Lua/Initialiser table avec code de fonction en ligne, mais la valeur assign fonctionne pas

table = { 
    a = 1; 
    b = myfunc(); 
    c = function() <some code> end; 
} 

Après cette table.c est de type fonction et je dois utiliser table.c() dans un instruction print avec l'opérateur .. pour obtenir le résultat. Mais je voudrais juste utiliser table.c à la place.

Y at-il un moyen que je puisse obtenir la valeur de retour de la fonction affectée à table.c afin que le type ne fonctionne pas sans avoir à définir une fonction en dehors de la table?

Répondre

2

Si vous souhaitez que la valeur de retour de la fonction soit table.c, vous devez lui affecter la valeur de retour de la fonction. Vous lui avez plutôt assigné la fonction elle-même.

Pour obtenir la valeur de retour d'une fonction, vous devez appeler cette fonction. Ce n'est vraiment pas différent de b. myfunc est une fonction; myfunc() appelle cette fonction et stocke sa valeur de retour.

Mais, en raison de la grammaire de Lua, appelant une fonction que vous définissez exige que vous devez envelopper la fonction construire expression dans (), puis l'appeler:

c = (function() <some code> end)(); 

Bien sûr, ne contiendra que la valeur de cette fonction au moment où la table est construite.