E4161#
编译器诊断名称:mismatch_with_declare。
声明与其实现不匹配。
当 declare 条目与实现它的条目描述了不同的 API 时,会出现此错误。MoonBit 会将声明与实现进行检查,避免前向声明、抽象类型声明或已声明的实现关系悄悄偏离实际定义。
对于函数和方法,实现必须与声明的名称、可见性、类型参数、参数类型、返回类型、约束和 effect 匹配。对于已声明的类型,实现必须与声明的可见性和类型参数列表匹配。对于已声明的实现关系,被实现的 trait、目标类型、可见性和类型参数都必须匹配。
错误示例#
declare pub fn declared_increment(x : Int) -> Int
pub fn declared_increment(x : Int) -> Double {
x.to_double()
}
声明中 declared_increment 返回 Int,但实现返回 Double。
建议#
修改声明或实现,使公开契约只有一种写法。
declare pub fn declared_increment(x : Int) -> Int
pub fn declared_increment(x : Int) -> Int {
x + 1
}