label_in_outer_scope
無法引用在外部方法中宣告的標籤 '{0}'。
描述
#當 break 或 continue 語句引用在其所在函式外部的方法或函式中宣告的標籤時,分析器會生成此診斷。不能使用 break 和 continue 語句將控制流轉移到包含它們的函式之外。
示例
#以下程式碼會生成此診斷,因為標籤 loop 在區域性函式 g 之外宣告。
dart
void f() {
loop:
while (true) {
void g() {
break loop;
}
g();
}
}常見解決方法
#嘗試重寫程式碼,使其無需將控制流轉移到區域性函式外部,這可能透過內聯區域性函式來實現。
dart
void f() {
loop:
while (true) {
break loop;
}
}如果無法做到,則嘗試重寫區域性函式,以便可以使用函式返回的值來確定是否轉移控制流。
dart
void f() {
loop:
while (true) {
bool g() {
return true;
}
if (g()) {
break loop;
}
}
}