E4113#
构造函数没有给定名称的字段。
当试图访问构造函数模式中不存在的字段时,会发生此错误。在 MoonBit 中,当与具有命名字段的构造函数进行模式匹配时,您只能访问在构造函数声明中定义的字段。
此情况通常发生在:
拼错字段名
试图访问存在于其他构造函数中的字段
试图访问已从类型定义中删除或重命名的字段
错误示例#
pub enum E {
A(a~: Int)
}
pub fn f(x: E) -> Unit {
match x {
A(..) as a => {
println(a.a)
println(a.b)
// ^^^ Error: Constructor A of type E has no field b.
}
}
}
建议#
要修复此错误,您可以执行以下操作:
将缺少的字段添加到构造函数中
pub enum E {
A(a~: Int, b~: Bool)
}
pub fn f(x: E) -> Unit {
match x {
A(..) as a => {
println(a.a)
println(a.b)
}
}
}
删除不正确的字段访问