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 => ()
}
}
}