E4110

E4110#

该循环不应该返回值,请从 break 语句中删除参数,或添加 else 分支。

当在不应该返回值的循环中使用带有参数的 break 语句时,就会发生此错误。此错误适用于以下循环:

  • While 循环

  • 带有更新表达式 for 循环

  • for .. in 循环

这些循环结构没有从循环体返回值的机制。如果您需要使用值中断循环,您必须:

  1. 如果您不需要从循环中返回值,请从 break 语句中删除参数,或

  2. 添加一个 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
  }
}