02_Cairo1.0中的常量

  • 0xSH
  • 更新于 2023-06-27 12:28
  • 阅读 1200

基本用法usedebug::PrintTrait;constONE_HOUR_IN_SECONDS:felt252=360

此文章使用的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;
                                     ^**^
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
0xSH
0xSH
江湖只有他的大名,没有他的介绍。