E4106

E4106#

for 循环步骤中存在未知绑定器。这些步骤中的绑定器必须在 for 循环的初始化块中声明。

如果 for 循环的更新表达式(步骤)中使用的变量名未在该循环的初始化块中声明,则会发生此错误。在 for 循环中,您只能在更新表达式中使用先前在初始化循环时声明的变量。

错误示例#

pub fn f(x: Int) -> Unit {
  let mut j = 0
  for i = 0; i < x; i = i + 1, j = j + 1 {
//                             ^ --- Error: Unknown binder j in the for-loop
//                                          steps. Binders in the steps must be
//                                          declared in the initialization
//                                          block of the for-loop.
    println(i)
    println(j)
  }
}

建议#

To fix this error, you can

  • 在 for 循环的初始化块中声明变量 j。例如,

pub fn f(x: Int) -> Unit {
   for i = 0, j = 0; i < x; i = i + 1, j = j + 1 {
    println(i)
    println(j)
  }
}
  • 从更新表达式中删除变量 j。例如,

pub fn f(x: Int) -> Unit {
  let mut j = 0
  for i = 0; i < x; i = i + 1 {
    println(i)
    println(j)
    j = j + 1
  }
}