Break

Le break sert à interrompre une boucle dans lequel il se trouve (son bloc de code).

Le bloc est interrompu par le break peu importe son niveau d’imbrication, par exemple dans une fonction il n’arrêtera pas la fonction, mais juste la boucle ou il se situe et le code continuera de s’exécuter juste après la boucle.

Exemple :

nbLignes = 5
nbColonnes = 5
--
playerColonne = 3
playerLigne = 5
--
function returnStartPosition()
 for x = 1, nbColonnes do
   playerColonne = playerColonne - 1
   if playerColonne == 1 then -- back player to position x = 1
     break
   end
 end
 --
 for y = 1, nbLignes do
   playerLigne = playerLigne - 1
   if playerLigne == 1 then -- back player to position y = 1
     break
   end
 end
end
--
returnStartPosition()
print("playerColonne : "..playerColonne.."n".."playerLigne  : "..playerLigne)

sortie console :

playerColonne : 1
playerLigne  : 1

La boucle FOR x est Arrêté par le break, puis le code continue d’exécuter la fonction et exécute donc la prochaine boucle FOR y.


Return

Le return, retourne le résultat d’une fonction et la quitte tout simplement.

Voyons la différence avec la même fonction avec l’utilisation de return :

nbLignes = 5
nbColonnes = 5
--
playerColonne = 3
playerLigne = 5
--
function returnStartPosition()
 for x = 1, nbColonnes do
   playerColonne = playerColonne - 1
   if playerColonne == 1 then -- back player to position x = 1
     return
   end
 end
 --
 for y = 1, nbLignes do
   playerLigne = playerLigne - 1
   if playerLigne == 1 then -- back player to position y = 1
     return
   end
 end
end
--
returnStartPosition()
print("playerColonne : "..playerColonne.."n".."playerLigne  : "..playerLigne)

sortie console :

playerColonne : 1
playerLigne  : 5

Lorsque la première condition if playerColonne == 1 then est rempli, le return nous fait quitter la fonction.

Pour avoir un code fonctionnel similaire à l’exemple avec break, mais avec un return et sans faire trop compliqué…

Nous pouvons par exemple créer deux fonctions qui return la bonne position lorsque celle-ci est atteinte.

Exemple :

nbLignes = 5
nbColonnes = 5
--
playerColonne = 3
playerLigne = 5
--
function returnStartPositionX()
 for x = 1, nbColonnes do
   if playerColonne - x == 1 then -- back player to position x = 1
     return playerColonne - x
   end
 end
end
--
function returnStartPositionY()
 for y = 1, nbLignes do
   if playerLigne - y == 1 then -- back player to position y = 1
     return playerLigne - y
   end
 end
end
--
playerColonne = returnStartPositionX()
playerLigne = returnStartPositionY()
print("playerColonne : "..playerColonne.."n".."playerLigne  : "..playerLigne)

sortie console :

playerColonne : 1
playerLigne  : 1

Un autre exemple avec un return de type booléen :

heroX = 10
heroY = -500

monEcranX = 0
monEcranY = 0
monEcranW = 800
monEcranH = 600

function horsScreen()
  if heroX < monEcranX then 
    return true
  elseif heroY < monEcranY then 
    return true
  elseif heroX > monEcranW then 
    return true
  elseif heroY > monEcranH then 
    return true
  else
    return false
  end 
end 

if horsScreen() then 
  print("ATTENTION ! héro est en dehors de l'écran") 
else 
  print("héro est dans l'écran, RAS !") 
end

sortie console :

ATTENTION ! héro est en dehors de l'écran

Fin du chapitre, on se retrouve pour la suite =)