Carbon语言 泛型
泛型接口用于做泛型代码的类型检查。
interface Summary { fn Summarize[me: Self]() -> String; }
这个interface不是Java中的 interface,而是有点像C++中的 Concept,对泛型做类型检查用的。
使用泛型函数:
fn PrintSummary[T:! Summary](x: T) { Console.Print(x.Summarize()); }
定义了一个支持Summary泛型接口的泛型函数PrintSummary 实现泛型接口。
class NewsArticle { ... impl as Summary { fn Summarize[me: Self]() -> String { ... } } }
所以,可以使用泛型函数来调用实现了泛型接口的类对象。
// n 是 NewsArticle类型 PrintSummary(n);
也可以直接调用:
// n 是 NewsArticle类型 n.Summarize();
扩展其他包的API
import OtherPackage; interface Summary { fn Summarize[me: Self]() -> String; } // 泛型函数 fn PrintSummary[T:! Summary](x: T) { Console.Print(x.Summarize()); } // 扩展外部API的接口 external impl OtherPackege.Tweet as Summary { fn Summarize[me: Self]() -> String { ... } } fn SummarizeTweet(t: Tweet) { PrintSummary(t); }
我们导入了一个外部的包OtherPackege,它之中有一个Tweet类型,然后我们可以通过external impl来扩展它支持它本不存在的泛型接口。
Carbon语言中的指针是一种数据类型,指针是存放数据的内存单元地址。计算机系统的内存拥有大量的存储单元,每个存储单元的大小为1字节,为了便于管理,必须为每个存储单元编号,该编号就是存储单元的“地址&rd ...