E4134

E4134#

编译器诊断名称:invalid_foreach_pattern

for .. in 绑定中的模式对于正在迭代的值并不穷尽。

循环体会对每个元素执行一次,因此绑定模式必须匹配所有可能的元素。例如,Some(value) 不能绑定 Option[T],因为元素可能是 None

错误示例#

///|
pub fn print_values(values : Array[Option[Int]]) -> Unit {
  for Some(value) in values {
    println(value)
  }
}

建议#

请绑定整个元素并在循环体内处理不同分支,或使用元组模式、记录模式等穷尽的解构模式。

///|
pub fn print_values(values : Array[Option[Int]]) -> Unit {
  for value in values {
    match value {
      Some(value) => println(value)
      None => ()
    }
  }
}