Greg's Devblog Par un développeur, pour les développeurs

9oct/100

Java : break label

Parmi les différents projets que j'ai en cours, j'en ai un encore top secret (^^) qui implique de parser du code Java. Pour la beauté de la chose, c'est bien entendu fait en OCaml (amen), mais ce n'est pas du tout le sujet de ce billet.

En fait, parfois je trouve des trucs qui me paraissent bizarres dans la BNF (Backus Normal Form, une notation qui permet de décrire la syntaxe d'un langage), et là je viens de découvrir qu'on peut ajouter un label à un break... Du coup j'ai fait une petite recherche Google pour voir à quoi ça ressemble, et je suis tombé sur un site qui donne un exemple sympa de la chose :

OuterLoop: for (int i = 2;; i++) {
	for (int j = 2; j < i; j++) {
		if (i % j == 0) {
			continue OuterLoop;
		}
	}

	System.out.println(i);

	if (i == 37) {
		break OuterLoop;
	}
}

Dans cet exemple, on a le label qui est utilisé à la fois sur un break et sur un continue. Quel en est le principe : le label permet tout simplement de désigner la boucle sur laquelle on veut que l'action s'effectue. Donc on peut avoir de multiples boucles for/while imbriquées, grâce à ça on peut sortir de tous les niveaux d'un coup, ou juste de quelques uns.

Pas grand chose de plus à ajouter... Ah si, qui sait ce que fait ce code ?






Commentaires (0) Trackbacks (0)

Aucun commentaire pour l'instant


Laisser un commentaire


Aucun trackbacks pour l'instant