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