E4204#
编译器诊断名称:loop_nobreak_not_supported。
loop 表达式不支持 nobreak 块。nobreak 适用于可能正常结束的循环形式,而 loop 是一种显式的函数式循环,需要在循环体中 continue 或 break。
错误示例#
///|
fn count_down(n : Int) -> Int {
loop n {
0 => break 0
i => continue i - 1
} nobreak {
-1
}
}
///|
test {
ignore(count_down)
}
建议#
当你需要循环状态和显式结果时,将代码改写为 for 循环。
///|
fn count_down(n : Int) -> Int {
for i = n {
if i == 0 {
break 0
}
continue i - 1
}
}
///|
test {
inspect(count_down(3), content="0")
}