Cairo 101 入门

1. Hello Cairo
2. 基本类型
3. 局部和状态变量
4. 变量可变性
5. 函数
6. 元组 Tuple
7. 数组
8. 结构体
9. 枚举
10. 映射和其他类型
11. 控制流
12. 模式匹配
13. Option
14. 类型转换
15. 构造函数
.
构造函数

在本章中,我们将探索 Cairo 中的 constructor 构造函数,用于初始化合约的状态变量。

构造函数

和 Solidity 类似,Cairo 中的 constructor 是一个特殊的函数,它会在合约部署期间自动运行一次。它通常用于初始化合约的参数,例如设置 owner 地址:

#[starknet::contract]
mod owner{
    // 导入合约地址相关库
    use starknet::ContractAddress;
    use starknet::get_caller_address;

    // 定义存储变量
    #[storage]
    struct Storage{
        owner: ContractAddress,
    }

    // 在部署期间设置 owner 地址
    #[constructor]
    fn constructor(ref self: ContractState) {
        self.owner.write(get_caller_address());
    }
}

在上述合约中,我们在 Storage 结构体中定义了一个存储变量 owner。然后在 constructor 函数中将这个 owner 初始化为调用者的地址。

规则

  1. constructor 函数必须标记为 #[constructor] 属性。
  2. 每个合约最多可以有一个 constructor。

总结

在这一章节中,我们介绍了 Cairo 中的 constructor 函数。这个特殊的函数将在合约部署期间自动运行一次,为合约的状态变量设定初始状态。

PreviousNext