E1022

E1022#

有歧义的块表达式。在 MoonBit 中,表达式 { value } 有歧义,因为它可以被解释为块表达式或结构体字面量。目前,我们将其视为结构体字面量,但不建议编写这样的表达式。

错误示例#

struct S {
  value : Int
}

fn main {
  let value = 3
  let s = { value }
  ignore(s)
}

建议#

如果你想使用结构体字面量构造结构体,你可以在结构体字面量的末尾添加逗号。或者你可以在这个编辑区域中调用格式化程序,让它自动添加逗号。

fn main {
  let value = 3
  let s = { value, }
  ignore(s)
}

如果你将其用作块表达式,请移除大括号,因为它只有一个表达式,等效于表达式 value

fn main {
  let value = 3
  let s = value
  ignore(s)
}