跳到主要内容

泛型与接口

RGC 支持泛型函数、泛型类、泛型枚举,并通过**接口(interface)**提供静态分派与边界约束。

泛型函数​

def first[T](items: @List[T]) -> T {
return items[0]
}

泛型类​

class Pair[A, B] {
first: A
second: B
}

泛型枚举​

enum Option[T] {
Some(value: T)
None
}

接口(interface)​

接口定义行为契约,类型通过 implement 实现:

interface Show {
def to_string(self) -> str
}

class Point {
x: int
y: int
}

implement Show for Point {
def to_string(self) -> str {
return "({}, {})".format(self.x, self.y)
}
}

边界约束​

泛型参数可以用接口约束其能力:

def print_all[T: Show](items: @List[T]) {
for item in items {
print(item.to_string())
}
}

单态化​

泛型通过单态化编译:每个具体类型生成专用代码,无虚表开销、无装箱成本,性能与手写专用实现一致。

继续阅读​