E4111#
break 文の使い方が不正です。
ループの初期化、条件、または更新文で break 文を使うと、このエラーが発生します。
誤った例#
///|
pub fn f(x : Int, y : Int) -> Unit {
for i = 0; i < x; i = i + 1 {
for j = ({
break
})
j < y
j = j + 1 {
// ^^^^^ Error: The usage of break statement is invalid.
println(i + j)
}
}
}
修正方法#
ループの初期化、条件、更新文には break 文を書かず、ループ本体に置きます。
///|
pub fn f(x : Int, y : Int) -> Unit {
for i = 0; i < x; i = i + 1 {
for j = 0; j < y; j = j + 1 {
if i + j > 10 {
break
}
println(i + j)
}
}
}
ラベルのない break がラベル付きブロックの直下にある場合にも、このエラーが発生します。ブロックを抜けるときは、そのラベルを指定します:
///|
pub fn value_or_zero(value : Int?) -> Int {
result~: {
guard value is Some(result) else { break }
result
}
}
///|
pub fn value_or_zero(value : Int?) -> Int {
result~: {
guard value is Some(result) else { break result~ 0 }
result
}
}