E4119

E4119#

编译器诊断名称:unknown_func_labelled_arg

该函数不是顶层函数,因此不能带有标签参数。

只有顶层函数才能声明或接收标签参数。局部函数会被推断为普通函数值,因此当 g 是局部函数参数时,g(x~) 这样的调用会被拒绝。

错误示例#

fn init {
  let x = 42
  fn f(g) {
    g(x~)
  //^
  // Error: This function is not a toplevel function, so it cannot have labelled arguments.
  }
  f(h)
}

fn h(x : Int) -> Unit {
  ignore(x)
}

建议#

调用局部函数值时,请按位置传递参数;如果需要标签参数,请将函数移动到顶层。

fn init {
  let x = 42
  fn f(g) {
    g(x)
  }
  f(h)
}

fn h(x : Int) -> Unit {
  ignore(x)
}