跳到主要内容

类型系统

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)
}

继续阅读​