web-dev-qa-db-fra.com

Comment quitter l'exécution d'un script Lua

Je veux quitter l'exécution du script Lua à certaines conditions. Exemple :

 content = get_content () 
 sinon content alors 
 - (Ici je veux une sorte de fonction de sortie) 
 next_content = get_content () 
 - exemple, il peut y avoir beaucoup de contrôles supplémentaires 

Ici, je veux que si je n'obtiens pas de contenu, mon script suppose de se terminer ne doit pas aller au suivant.

29
Prashant Gaur

extrait du lua api doc :

Pour des raisons syntaxiques, un saut ou un retour ne peut apparaître que comme la dernière instruction d'un bloc (en d'autres termes, comme la dernière instruction de votre bloc ou juste avant une fin, un autre ou un jusqu'à). Par exemple, dans l'exemple suivant, break est la dernière instruction du bloc then.

local i = 1
while a[i] do
  if a[i] == v then break end
  i = i + 1
end

Habituellement, ce sont les endroits où nous utilisons ces déclarations, car toute autre déclaration qui les suit est inaccessible. Parfois, cependant, il peut être utile d'écrire un retour (ou une pause) au milieu d'un bloc; par exemple, si vous déboguez une fonction et que vous souhaitez éviter son exécution. Dans de tels cas, vous pouvez utiliser un bloc do explicite autour de l'instruction:

function foo ()
  return          --<< SYNTAX ERROR
  -- `return' is the last statement in the next block
  do return end   -- OK
  ...             -- statements not reached
end
9
Mali

Utilisez os.exit() ou simplement return à partir d'une fonction "principale" si votre script est intégré.

48
Oleg V. Volkov
os.exit()

tuer le processus en envoyant un signal

do return end

arrêter l'exécution

Les deux méthodes ne sont pas égales si vous voulez écrire et exécuter du luacode dans l'interpréteur après avoir arrêté l'exécution en lançant votre programme en utilisant le -i drapeau.

th -i main.lua
16
freedoo

Dans lua 5.2.0-beta-rc1 +, vous pouvez ajouter une étiquette à la fin de votre code appelée ::exit:: ou quelque chose de similaire, puis chaque fois que vous devez quitter le programme, appelez-le comme ceci:

goto exit
1
user5331742