宏
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