附录 E - 编写合约所需最常见的类型 和Trait以及Cairo Prelude
Prelude
Cairo预设是一个常用模块、函数、数据类型和特性的集合,它们会自动引入到Cairo crate中每个模块的作用域中,无需显式的导入语句。Cairo的预设提供了开发者开始编写Cairo程序和智能合约所需的基本构建块。
核心库预设定义在 corelib crate 的lib.cairo文件中,包含了Cairo的基本数据类型、traits、操作符和实用函数。其中包括:
- 数据类型:felts、bools、arrays、dicts等。
- Traits:用于算术、比较、序列化的行为。
- 操作符:算术、逻辑、位运算符。
- 实用函数:用于数组、映射、包装等的辅助函数。
核心库预设提供了基本的Cairo程序所需的基本编程构造和操作,无需显式导入元素。由于核心库预设被自动导入,其内容可在任何Cairo crate中使用,无需显式导入。这避免了重复工作,提供了更好的开发体验。这就是为什么你可以在不显式引入的情况下使用
ArrayTrait::append()
或Default
特性的原因。
常见类型和trait列表
以下部分简要概述了在开发Cairo程序时常用的类型和特性。大多数这些都包含在预设中,无需显式导入 - 但并非全部。
Import | Path | Usage |
---|---|---|
OptionTrait | core::option::OptionTrait | OptionTrait<T> 定义了一组操作可选值所需的方法. |
ResultTrait | core::result::ResultTrait | ResultTrait<T, E> 是用于表示Starknet合约地址的类型,其取值范围为[0, 2 ** 251). |
ContractAddress | starknet::ContractAddress | ContractAddress 是一种用于表示智能合约地址的类型 |
ContractAddressZeroable | starknet::contract_address::ContractAddressZeroable | ContractAddressZeroable 是对 ContractAddress 类型实现的Zeroable trait。它用于检查t:ContractAddress 的值是否为零。 |
contract_address_const | starknet::contract_address_const | contract_address_const! 是一个函数,允许实例化常量合约地址值。 |
Into | traits::Into; | Into<T> 是用于类型转换的 trait。如果对类型T和S存在Into<T,S>的实现,那么可以将T转换为S |
TryInto | traits::TryInto; | TryInto<T> 是用于类型转换的 trait。如果对类型T和S存在TryInto<T,S>的实现,那么可以将T转换为S. |
get_caller_address | starknet::get_caller_address | get_caller_address() 是一个函数,用于返回调用合约的地址。它可以用于识别合约函数的调用者 |
get_contract_address | starknet::info::get_contract_address | get_contract_address() 是一个函数,用于返回当前合约的地址。它可以用于获取正在执行的合约的地址. |
这并不是一个详尽的列表,但它涵盖了合约开发中一些常用的类型和trait。关于更多的细节,请参考官方文档并参考可用的库以及框架。