区块链 区块链技术 比特币公众号手机端

02_Cairo1.0中的常量

liumuhui 2年前 (2023-06-28) 阅读数 199 #技术
文章标签 StarkNet

此文章使用的Cairo编译器版本:1.0.0-alpha.6。因为Cairo正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。

基本用法

use debug::PrintTrait;

const ONE_HOUR_IN_SECONDS: felt252 = 3600;

fn main(){
    ONE_HOUR_IN_SECONDS.print();
}

使用 const 关键字,并且指明了常量的类型,最后给出了常量的值。

与不可变变量的区别

常量有以下性质:

  1. 不允许使用 mut 关键字
  2. 只能在全局范围内声明
  3. 只可以使用字面量给常量赋值

将常量声明在函数中试试

use debug::PrintTrait;

fn main(){
    const ONE_HOUR_IN_SECONDS: felt252 = 3600;
    ONE_HOUR_IN_SECONDS.print();
}

这样写会收到一大堆的错误。

使用非字面量赋值也会报错

use debug::PrintTrait;

const TEST: felt252 = 3600;
const ONE_HOUR_IN_SECONDS: felt252 = TEST;

fn main(){
    ONE_HOUR_IN_SECONDS.print();
}

上述代码使用一个常量给另一个常量赋值,会收到如下错误

error: Only literal constants are currently supported.
 --> d_const.cairo:4:38
const ONE_HOUR_IN_SECONDS: felt252 = test;
                                     ^**^
版权声明

本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门