文ラベルのスコープ
自分めも。
ラベルのスコープはけっこう特殊。
public static void hoge() { L1 : {} L1 : {} }
上記のように並列してもOK。
下記のように直列するとNG。
public static void seq() { L1 : L1: {} }
LABEL : STATEMENT のSTATEMENTの部分がスコープらしい。下記も重複してNG。
public static void inner() { L1 : { L1 : {} } }
確かにこれなら、break, continueで下記のような記法はスコープ外になるので余計なことを考えないで済む。
public static void outer() { L1 : for (int i = 0; i < 10; i++) { } L2 : for (int i = 0; i < 10; i++) { break L1; // L1はスコープ外 } }
gotoが前提じゃないラベルだと、こんな仕様でもいいのかと関心しました。