E4131#
类型别名是一个函数类型,不是一个类型构造器。
当您尝试为类型别名定义方法时,会发生此错误。类型的别名可以与类型本身互换使用,不能为函数类型定义方法。因此,MoonBit 禁止为函数类型的类型别名定义方法。
错误示例#
typealias FuncAlias = (Int) -> Unit
pub fn FuncAlias::call(self : FuncAlias) -> Unit {
// ^~~~~~~~~
// Error: The type alias FuncAlias is a function type, not a type constructor.
self(0)
}
建议#
如果您想为函数类型定义方法,您应该定义一个新类型,它包装函数类型:
type FuncWrap (Int) -> Unit
pub fn FuncWrap::call(self : FuncWrap) -> Unit {
(self._)(0)
}