Cairo 101 入门

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

在本章中,我们将介绍Cairo中的数组,包括它们的8个成员函数。

数组

数组是相同类型T的对象的集合,存储在连续的内存中,并可使用索引进行访问。数组在Cairo中并非原生支持,你需要导入ArrayTrait库来使用它。

use array::ArrayTrait;

数组对象有 8 个成员函数,我们将逐一介绍。你需要导入更多库来使用它们。

use option::OptionTrait;
use box::BoxTrait;

我们将在后续章节深入探讨 Cairo 库。

new()

你可以使用new()函数创建一个新数组:

use array::ArrayTrait;

#[external(v0)]
fn create_array(self: @ContractState) -> Array<felt252> {
    // new(): 创建新数组
    let mut arr = ArrayTrait::new();

    // 返回数组
    return arr;
}

append()

要向数组添加元素,可以使用append()函数:

// append(): 将元素追加到数组末尾
arr.append(1);
arr.append(2);
arr.append(3);

pop_front()

要从数组中移除元素,可以使用pop_front()函数。要使用它,你需要用 use option::OptionTrait; 导入另一个OptionTrait库。

// pop_front(): 从数组中移除第一个元素
let pop_element = arr.pop_front().unwrap();

at() 或 get()

要访问数组中的某个元素,可以使用at()或get()函数。区别在于get()函数返回一个Option,这是一种枚举类型,用于表示值可能存在或不存在。Option类型是一种通用类型,这意味着它可以与任何数据类型一起使用。要使用get(),你需要导入OptionTrait和BoxTrait库。

// at(): 获取特定索引处的元素
let elem_one = *arr.at(0);

// get(): 获取特定索引处的元素,返回 Option 类型。
// 需要导入 OptionTrait 和 BoxTrait
let elem_two = *arr.get(1).unwrap().unbox();

len()

你可以使用len()函数获取数组的当前长度:

// len(): 数组的长度
let length = arr.len();

is_empty()

is_empty()函数检查数组是否为空,如果数组没有元素,则返回true;如果数组至少有一个元素,则返回false。

// is_empty(): 检查数组是否为空并返回布尔值
let empty_arr = arr.is_empty();

span()

跨度是包含数组快照的结构。你需要导入SpanTrait库来使用它。

// span(): 跨度是包含数组快照的结构。
// 需要导入 SpanTrait
let my_span = arr.span();

总结

在本章中,我们介绍了Cairo中的数组及其8个成员函数,包括它们的用法以及使用特定函数所需的库。

PreviousNext