2012-10-1
android: breakはループおよびスイッチの外側で使用できません
症状:
ループかスイッチをネスト(入れ子)しているとき、異なる階層で単に break; とだけやると、そのネストの全ての break; に対して発せられる。
解決法:
break はそのループまたはスイッチを出てください、ということなのだが、ネストされている場合、「そこから離れてください!」と言われて、「そこ」ってどこよ?東京?日本?地球?太陽系?みたいなことになる。(平屋のときには言われない)
そこで(全てのループにつける必要はないが、出口が必要な)ループの階層にラベルを付けてあげる。
例えば、以下のように if 文を並列させる必要があるときなどは必須になるだろう(イメージなので文法は簡略化)
- 生産国: if (海外) {
- 「該当なし」を返す;
- break 生産国;
- } else {
- 排気量: if (2,000cc以下) {
- 「国産小型」を返す;
- break 排気量;
- } else {
- 「国産大型」を返す;
- break 排気量;
- }
- 色: if (白) {
- 「白」を返す;
- break 色;
- } else if (黒) {
- 「黒」を返す;
- break 色;
- } else if ...