E4175#
编译器诊断名称:as_not_trait_object。
as 右侧不是 trait 对象类型。
MoonBit 使用 as &Trait 将值转换为 trait 对象。因此目标类型必须是 &Show 这样的 trait 对象类型,而不是普通的具体类型、类型参数或包类型。
错误示例#
fn invalid_cast() -> Unit {
let _ = 1 as Int
}
Int 是具体类型,不是 trait 对象类型,因此不能用在 as 的右侧。
建议#
如果需要 trait 对象,请使用 as &Trait。如果只需要类型标注,请将期望类型写成标注,而不是使用 as。
fn show_value() -> Unit {
let value = 1 as &Show
println(value)
}