类型系统¶
Jaon 采用静态类型系统,同时支持局部类型推断,兼顾 Java 的严谨与 Python 的简洁。
基本类型¶
类型 |
说明 |
|---|---|
|
整数 |
|
浮点数 |
|
布尔值 |
|
字符串 |
|
空值 |
|
动态任意类型 |
|
无返回值 |
类型推断¶
使用 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<Int> = [1, 2, 3];
字典:
var scores: Dict<String, Int> = {"Alice": 90, "Bob": 85};
也可以省略泛型参数,由编译器推断:
var nums = [1, 2, 3]; // List<Int>
var scores = {"Alice": 90, "Bob": 85}; // Dict<String, Int>
类型兼容性¶
Int可隐式提升为Float。Any与所有类型兼容。子类实例可赋值给父类类型变量。
带泛型参数的集合可赋值给对应裸类型(如
List<Int>到List)。