E4114

E4114#

只有顶层函数可以有带标签的参数。

当尝试在本地函数或匿名函数中使用带标签的参数时,就会发生此错误。

错误示例#

pub fn f() -> Unit {
  fn h(x~: Int) -> Unit {
//     ^^ Error: Only toplevel functions can have labelled arguments.
    println(x)
  }
  h(x=42)
}

建议#

要修复此错误,您可以执行以下操作:

  • 将函数移动到模块的顶层

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

pub fn f() -> Unit {
  h(x=42)
}
  • 移除带标签的参数

pub fn f() -> Unit {
  fn h(x: Int) -> Unit {
    println(x)
  }
  h(42)
}