类型系统
RGC 是静态类型语言:所有表达式在编译期都有确定的类型,同时支持类型推断,不需要到处写类型注解。
基础类型
| 类型 | 说明 | 示例 |
|---|---|---|
int | 整数 | 42 |
float | 浮点数 | 3.14 |
bool | 布尔值 | True / False |
str | 字符串 | "hello" |
None | 空值 | None |
类型注解
变量、函数参数与返回值都可以显式注解:
def scale(x: float, factor: int) -> float {
return x * factor
}
类型推断
未注解的局部变量由初始化表达式推断:
def main() {
n = 10 # n: int
s = "rgc" # s: str
}
复合类型
RGC 提供代数数据类型(ADT),包括 class 与 enum:
class Point {
x: int
y: int
}
enum Shape {
Circle(radius: float)
Rect(width: float, height: float)
}
模式匹配
配合 enum 使用 match 进行模式匹配:
def area(shape: Shape) -> float {
match shape {
case Circle(r) => 3.14159 * r * r
case Rect(w, h) => w * h
}
}
可空与错误
- 用
Maybe[T]表达可能为空的返回值。 - 用
Result[T, Err]表达可恢复错误,禁止静默失败。 - 用后缀
?传播错误:Err时提前返回,Ok时取出载荷。
def safe_div(a: int, b: int) -> Result[int, str] {
if b == 0 {
return Result[int, str].Err("division by zero")
}
return Result[int, str].Ok(a // b)
}
def total(a: int, b: int) -> Result[int, str] {
x = safe_div(a, b)?
return Result[int, str].Ok(x + 1)
}