E4110#
该循环不应该返回值,请从 break
语句中删除参数,或添加 else
分支。
当在不应该返回值的循环中使用带有参数的 break
语句时,就会发生此错误。此错误适用于以下循环:
While 循环
带有更新表达式
for
循环for .. in
循环
这些循环结构没有从循环体返回值的机制。如果您需要使用值中断循环,您必须:
如果您不需要从循环中返回值,请从
break
语句中删除参数,或添加一个
else
分支,用于处理循环正常完成时返回值的情况
错误示例#
pub fn f(x: Int) -> Unit {
for i in 0..=x {
break i
// ^^^^^^^^ Error: The for loop is not expected to yield a value, please
// remove the argument of the `break` or add an `else` branch.
}
}
建议#
要修复此错误,您可以:
从
break
语句中删除参数。例如:
pub fn f(x: Int) -> Unit {
for i in 0..=x {
break
}
}
添加一个
else
分支,用于处理循环正常完成时返回值的情况。例如:
pub fn f(x: Int) -> Int {
for i in 0..=x {
break i
} else {
42
}
}