泛型和Trait
每一个编程语言都有高效处理重复概念的工具。在 Cairo 中其工具之一就是 泛型(generics)。泛型是具体类型或其他属性的抽象替代。我们可以表达泛型的属性,比如他们的行为或如何与其他泛型相关联,而不需要在编写和编译代码时知道他们在这里实际上代表什么。
函数、结构体、枚举和trait可以将泛型作为其定义的一部分,而不是像u32
或ContractAddress
这样的具体类型。
泛型允许我们用一个代表多种类型的占位符来替换特定的类型,以消除代码的重复。
对于每一个取代泛型的具体类型,编译器都会创建一个新的定义,从而减少程序员的开发时间,但在编译层面上的代码重复仍然存在。如果你正在编写Starknet合约,并为多个类型使用一个泛型,这将导致合约大小的增加,这可能是很重要的。
之后你将学习 trait,这是一个定义泛型行为的方法。trait 可以与泛型结合来将泛型限制为只接受拥有特定行为的类型,而不是任意类型。