Mojo 变量是静态定型的:变量的类型在编译时确定,运行期间不再改变。一旦某个名称在某个作用域内完成绑定,它的类型就固定下来,不能被重新绑定为另一种类型。
开发者可以选择不写类型标注,此时 Mojo 依据第一次赋给该变量的值推断其类型。例如不标注类型的变量被赋整数值后,即被推断为 Int 类型,随后再赋字符串会触发编译错误。
变量既可以同时给出值和类型标注,也可以只给出类型标注而暂不赋值。官方文档的建议是标注得越充分,代码越清晰,也越容易维护。
如果确实需要让同一个变量持有不同类型的值,Mojo 提供了 Variant 类型,可在其枚举的类型范围内切换。此时变量本身仍然保持静态类型,即 Variant 本身,变化的只是它所承载的具体值。
函数可用 def 关键字定义,参数和返回值都可以声明类型。结构体方法中的 self 参数是唯一不需要写类型的参数,因为编译器已经知道它所属的类型。