E4074#
本错误代码会在顶层声明缺少类型标注时出现。MoonBit 要求顶层的变量声明和函数定义都有完整的类型标注,因为顶层定义的类型标注是重要的文档。
上述要求有两个例外:
如果顶层
let
定义的值是一个简单的字面量,可以省略类型标注:pub let forty_two = 42 pub let float = 1.0 pub let string = "Hello, world!" pub let array = [1, 2, 3]
如果顶层
let
是某个来自外部的函数的私有别名,也可以省略标注。此时,值的类型可以轻松被推导出。但是,对于pub let
,MoonBit 依然要求类型标注,因为这种类型标注是重要的文档。
错误示例#
let a = 1 + 1 // Error: Cannot infer the type of variable a, please add more type annotation.
建议#
这两个错误可以通过显式注释变量的类型来修复:
let a : Int = 1 + 1