Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.25.2·
            页面加载耗时 0.00 毫秒·物理内存 145.8MB ·虚拟内存 1438.3MB
        
        欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
        
        
        泛型接口用于做泛型代码的类型检查。
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();
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 ...