(BootCamp Lesson4)Cairo语言教程
目录# 00_Cairo 程序的入口#
https://starknetastro.xlog.app/00_Cairo-cheng-xu-de-ru-kou-md
01_Cairo 中的变量#
https://starknetastro.xlog.app/01_Cairo…
14_Cairo1.0 变量所有权
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 变量的作用域
变量的作用域,也可以理解为变量所有者的作用域,通常是指:变量的有效范围,或者可访问范围…
17_Cairo中的Trait
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 前面我们已经写了很多使用到 trait 的代码,我们现在就来将 trait 的用法总结一下。
Trait…
15_Cairo1.0 中的Snapshot和引用
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 在14_Cairo1.0 变量所有权一文中我们有提到 Copy trait,实现了 Copy trait…
16_Cairo1.0中的泛型(Generic)
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 泛型是一种编程语言特性,它允许在编写代码时使用类型参数,这些类型参数可以在代码实例化时被具体类型替换。
实际编程中…
Cairo最近released的版本 2.0.0-rc0 产生的语法变化
一些相关信息的渠道 GitHub 的 Cairo 项目任务进度版图:https://github.com/orgs/starkware-libs/projects/1/views/1
GitHub release 信息列表:https://github.com…
12_Cairo1.0中的Array(数组)
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 数组是一种非常常用的数据结构,通常代表一组相同类型的数据元素集合。无论是传统可执行程序,还是智能合约,都会使用到数组…
10_Cairo1.0中的function(函数)
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 基本用法
函数是任何一门编程语言必不可少的基础构建。一个函数一般包括:函数名、参数 和 返回值。在 Cairo 中…
09_Cairo中的流程控制
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 if 语句
Copy
use debug::PrintTrait;
fn main() {
let…
11_Cairo中的struct(结构体)
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 基本用法
定义一个 struct:
Copy
#[derive(Copy, Drop)]
struct User {…
13_Cairo1.0中的Map(映射)
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 基本用法
Map 也可以被称为字典 (dictionary),Cairo 中就是以字典来称呼的。基本用法主要包括…
07_Cairo中的Tuple(元组)
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 元组是一个很有意思的类型,许多编程语言都有这个特性。它是可以将多个不同的类型组合在一起,形成一个集合体。一旦被声明了…
08_Cairo 中的Match控制模式
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 Cairo 中的 Match 控制模式,90% 与 Rust 的一样。因为 Cairo 还在开发中,许多特性还未完善…
06_Cairo 中的Option(特殊Enum)
与 Rust 一样,Cairo 同样没有 Null 这种代表空的系统级变量或者属性。因为这样很容易出现:将空值当作非空值,或者将非空值当作空值的错误。 为了更好的理解这个错误,举一个 Golang 的例子:
在使用 Golang 的 Map 的时候,经常会出现” 从一个状态为…
03_Cairo中的标量类型(felt,integer,boolean,float)
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 felt252
felt252 是 Cairo 中基础类型,代表一个存储槽,未指定变量类型的字面量默认类型都是…
05_Cairo中的Enum(枚举)
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 Cairo 中的枚举是一组类型的枚举,或者可以说是多个子类型公用一个枚举类型。适用的场景是:一组有着共同点的类型…
04_Cairo中的类型转换
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 目前 Cairo 中的类型转换主要是将各种类型的整数相互转换,例如:u8、u16、u256、felt252 等…
02_Cairo中的常量
此文章使用的 Cairo 编译器版本:2.0.0-rc0。因为 Cairo 正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。 基本用法
Copy
use debug::PrintTrait;
const ONE_HOUR_IN_SECONDS…