Je plaisante à travers certains des objets de base Java lorsque j'ai trouvé une section de code entourée d'un Scan: {} code> bloc. Le code suivant provient de la méthode tolowercase () à l'intérieur de la classe de cordes.
scan: {
for (firstUpper = 0 ; firstUpper < len; ) {
char c = value[firstUpper];
if ((c >= Character.MIN_HIGH_SURROGATE)
&& (c <= Character.MAX_HIGH_SURROGATE)) {
int supplChar = codePointAt(firstUpper);
if (supplChar != Character.toLowerCase(supplChar)) {
break scan;
}
firstUpper += Character.charCount(supplChar);
} else {
if (c != Character.toLowerCase(c)) {
break scan;
}
firstUpper++;
}
}
return this;
}
4 Réponses :
C'est un bloc étiqueté . code> où Scan: strong> est une étiquette
Break Scan; Code> Il suffit de casser tout simplement le bloc marqué
ici, a Scan: code> est simplement un étiquette . La syntaxe
Break <étiquette> code> permet de sortir des boucles extérieures et de simuler certaines formes de la déclaration code> code>. La syntaxe est documentée dans le JLS A>: p>
Énoncé code> avec étiquette
identifiant code> tente de transférer le contrôle sur l'instruction marquée enfermée (§14.7) qui a le même identifiant
code> comme son étiqueter; Cette déclaration, appelée cible de pause, puis complète immédiatement normalement. Dans ce cas, la cible ne doit pas nécessairement être un
commutateur code>,
pendant code>,
faire code> ou
pour code> instruction. < / p>
blockQuote>
Cette pratique est-elle aspirée que celle de Goto?
@Daniel: Je ne veux pas créer de débats religieux. ;) Cependant, étant donné que ce formulaire peut être considéré comme plus "structuré" qu'un goto code>, j'imagine que des avocats an-
goto code> peuvent considérer cela moins désagréable.
@Daniel Non, car vous ne pouvez pas l'utiliser pour sauter arbitrairement en code. C'est utile avec break code> dans des boucles imbriquées pour spécifier la boucle à sortir de.
@NPE: Votre lien a répondu parfaitement à ma question et explique parfaitement pourquoi je n'ai pas pu trouver un bloc de numérisation! Merci encore
Vous pouvez définir une étiquette pour casser / ou continuer dans plusieurs boucles profondes.
Exemple P>
outer: for(int i=...){ for(int j=..){ ... break outer; // leaves both loops } }
C'est une étiquette code> code>. Il s'agit d'un indicateur de contrôle de flux.
Si vous regardez votre code, vous voyez ci-dessous P>
break scan;