过了两个月,Starklings 在 Mathieu 女士的帮助下更新了许多,我们继续来学习。
这一关的内容是关于元组(tuple)构建。Cairo1 支持元组,能够将不同类型的值组合起来。这里需要打印 cat 的两个属性 name 和 age,那我们需要先构建一个 cat 的元组,包含这两个属性。
我们在 11 行添加元组 ,就可以解决这关了。
let(name, age) = cat;
练习 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 更新答案吧。。。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。