通过 Starklings 学习 Cairo 1.0 ( 二 )
2023-04-01 04:21
Lvis 的专栏
2023-04-01 04:21
订阅此专栏
收藏此文章

过了两个月,Starklings 在 Mathieu 女士的帮助下更新了许多,我们继续来学习。

Primitive_types

exercise3

这一关的内容是关于元组(tuple)构建。Cairo1 支持元组,能够将不同类型的值组合起来。这里需要打印 cat 的两个属性 name 和 age,那我们需要先构建一个 cat 的元组,包含这两个属性。

我们在 11 行添加元组 ,就可以解决这关了。

let(name, age) = cat;

exercise4

练习 4 的内容是关于整数类型转换。在 core library 里有几种整数类型:u8,u16,u32,u64,u128 和 u256。这些类型背后其实都是 felt252,比如 u256 其实需要两个 felt 来拼接。这些整数类型支持数学运算,比如你可以这样:

let sum = 1_u128 + 2_u128

但是使用的时候需要注意是否会溢出(overflow),比如求两个数的和,但是超出了该类型的最大值,就会编译报错。

改变类型,将整数改变成 felt 可以使用.into()函数,将 felt 变形为整数可以使用

.try_into()函数。这个方法返回的是 Ok 后者 Err。要将 Ok 变为整数值,需要使用.unwrap()方法,例如,要将 felt252 转换为 u8 的整数之,我们可以用以下代码:

fn convert(x: felt 252) → u8 {  x.try_into().unwrap()}

当然,这三个函数我们都需要自己先手动 input 进来。

Mirror 真的太不智能了。这篇文章我在 mbp 上写了两天,完整的 Starklings 解答,结果在 Publish 的时候一直连接不上我的钱包,我就打开了我的 iMac 登陆 Mirror,想从这里 publish,结果点开 draft 是两天前的,意味着我 mbp 上这两天写的都没保存?更要命的是,这时候 mbp 上的 Mirror 网页跳出来提示说我的 draft 有个更新的版本。。。我就知道完了。。

所以这篇完整的教程变成了伊拉克战损版,后面我直接在 github 更新答案吧。。。

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

在 App 打开
特朗普
空投
rwa
稳定币
babylon
以太坊
wayfinder
wct
morph
香港
hyperliquid
wal