E4203#
编译器诊断名称:constr_as_function。
MoonBit 不允许将构造器直接作为高阶函数传递。构造器仍然可以正常调用,但在需要函数值时,应使用 lambda 包装构造器调用,使参数传递过程保持明确。
错误示例#
///|
priv enum Message {
Text(String)
}
///|
fn build(make : (String) -> Message) -> Message {
make("ready")
}
///|
test {
let _ = build(Text)
}
建议#
使用调用构造器的 lambda。
///|
priv enum Message {
Text(String)
}
///|
fn build(make : (String) -> Message) -> Message {
make("ready")
}
///|
test {
let message = build(value => Text(value))
match message {
Text(value) => inspect(value, content="ready")
}
}