类型系统 ======== Jaon 采用静态类型系统,同时支持局部类型推断,兼顾 Java 的严谨与 Python 的简洁。 基本类型 -------- =============== =================== 类型 说明 =============== =================== ``Int`` 整数 ``Float`` 浮点数 ``Bool`` 布尔值 ``String`` 字符串 ``Null`` 空值 ``Any`` 动态任意类型 ``Void`` 无返回值 =============== =================== 类型推断 -------- 使用 ``var`` 声明变量时,类型可由右侧表达式推断:: var x = 10; // Int var y = 3.14; // Float var s = "hello"; // String 使用 ``val`` 声明常量,同样支持推断:: val pi = 3.14159; // Float 显式类型标注 ------------ 函数参数和返回值必须显式标注类型:: fun add(a: Int, b: Int): Int { return a + b; } 局部变量也可以显式标注:: var count: Int = 0; var ratio: Float = 0.5; 集合类型 -------- 列表:: var nums: List = [1, 2, 3]; 字典:: var scores: Dict = {"Alice": 90, "Bob": 85}; 也可以省略泛型参数,由编译器推断:: var nums = [1, 2, 3]; // List var scores = {"Alice": 90, "Bob": 85}; // Dict 类型兼容性 ---------- - ``Int`` 可隐式提升为 ``Float``。 - ``Any`` 与所有类型兼容。 - 子类实例可赋值给父类类型变量。 - 带泛型参数的集合可赋值给对应裸类型(如 ``List`` 到 ``List``)。