Cairo语言有一些插件可以让开发人员简化代码。它们被称为 内联宏(inline_macros),是一种可以生成其他代码的代码编写方式。在Cairo语言中,只有两个 :"array![]"和 "consteval_int!()"。

让我们从 array! 宏开始

有时候,我们需要用在编译时已经知道的值来创建数组。这件事的基本做法是很不优雅且多余的。你需要首先声明数组,然后逐一为数组追加每个值。array! 是一种更简单的方法,它将这两个步骤合并在一起。 在编译时,编译器将创建一个数组,并按顺序追加传递给 array! 宏的所有值。

不使用 array!:

#![allow(unused)]
fn main() {
    let mut arr = ArrayTrait::new();
    arr.append(1);
    arr.append(2);
    arr.append(3);
    arr.append(4);
    arr.append(5);
}

使用 array!:

#![allow(unused)]
fn main() {
    let arr = array![1, 2, 3, 4, 5];
}

consteval_int!

在某些情况下,开发人员可能需要声明一个常量,该常量是整数计算的结果。为了在编译时计算常量表达式并使用其结果,需要使用consteval_int! 宏。

下面是 consteval_int!的示例:

#![allow(unused)]
fn main() {
const a: felt252 = consteval_int!(2 * 2 * 2);
}

编译器将解释为 const a: felt252 = 8

Last change: 2023-11-19, commit: a15432b