E4136#
此表达式的类型不是新类型。
在 MoonBit 中,您可以使用点访问运算符 (.
) 访问新类型的底层结构体的字段。但是,如果结构体未包装在新类型中,则无法访问该字段。
错误示例#
struct Inner {
value : Int
}
type! ErrorOuter Inner
enum EnumOuter {
Outer(Inner)
}
fn main {
let outer : ErrorOuter = ErrorOuter(Inner::{ value: 1 })
println(outer.value) // Error: This expression has type ErrorOuter, which is an error type type and not a struct.
let outer : EnumOuter = Outer(Inner::{ value: 2 })
println(outer.value) // Error: This expression has type EnumOuter, which is a variant type and not a struct.
}
建议#
如果要访问底层结构体的字段,您应该将其包装在新类型中:
type Outer Inner
fn main {
let outer : Outer = Inner::{ value: 1 }
println(outer.value)
}