.
枚举

在本章节中,我们将介绍在Cairo中使用enum(枚举)的方法。

Cairo 中的枚举

Cairo 中的枚举是一种定义一组命名值(变量)的方法,每个值都有一个关联的数据类型。使用枚举可以提高代码的可读性并减少错误。

使用enum关键字定义枚举,并在其后给出一个首字母大写的名称。

#[derive(Drop, Serde)]
enum Colors { 
    Red: (), 
    Green: (), 
    Blue: (), 
}

与Rust不同,Cairo枚举中的变量具有关联类型。在上面的示例中,Colors枚举中的RedGreenBlue变量具有单位类型()。在以下示例中,我们定义了一个具有不同变量类型的Actions枚举:

#[derive(Copy, Drop)]
enum Actions { 
    Forward: u128, 
    Backward: u128, 
    Stop: (),
}

创建枚举变量

您可以使用以下语法创建枚举变量:

let forward = Actions::Forward((1_u128));

在函数中返回枚举

枚举可以在函数中返回:

// 返回红色
#[external(v0)]
fn get_red(self: @ContractState) -> Colors {
    Colors::Red(())
}

#[external(v0)]
fn create_enum(self: @ContractState) {
    // create enum
    let forward = Actions::Forward((1_u128));
    let red = get_red(self);
}

总结

在本教程中,我们介绍了如何定义枚举、创建枚举变量以及在函数中返回枚举。这些知识将帮助您在Cairo中创建更具可读性和抗错误性的代码。