E4203

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