废话前言
今天继续通过starklings,学习cairo语言
今天学习了以下课程:
options
arrays
structs
前两课没有波澜,学习了语法,并且修改代码之后,基本就编译通过了。
问题
但是在学习到structs的 structs3.cairo时候,出现了一个想象不到的错误。如下
源代码如下:
struct Package {
sender_country: felt252,
recipient_country: felt252,
weight_in_grams: usize,
}
impl PackageImpl of PackageTrait {
fn is_international(ref self: Package) -> bool
{
if self.sender_country == self.recipient_country {
false
}
true
}
}
这个逻辑很清晰, 如果两个变量相同,则返回false, 否则true, 但是就这样, 一直报错。
原因
经过多次调试,最后发现原因了, 就是false 语句不会直接返回,这个地方不是return。
代码改成如下就通过了, 这里把 逻辑有点混乱了,还以为if 语句内部会直接返回。
struct Package {
sender_country: felt252,
recipient_country: felt252,
weight_in_grams: usize,
}
impl PackageImpl of PackageTrait {
fn is_international(ref self: Package) -> bool
{
if self.sender_country == self.recipient_country {
false
} else {
true
}
}
}