FizzBuzz
这个示例不是传统的 FizzBuzz
;相反,它是智能合约版本!一个脚本可以调用这个合约的 fizzbuzz
ABI 方法,传入一个 u64
值,并以 enum
的形式接收结果。
自定义结构体和枚举类型的格式,比如 FizzBuzzResult
,会自动包含在 ABI JSON 中,以便链下代码可以处理返回数据的编码形式。
contract;
enum FizzBuzzResult {
Fizz: (),
Buzz: (),
FizzBuzz: (),
Other: u64,
}
abi FizzBuzz {
fn fizzbuzz(input: u64) -> FizzBuzzResult;
}
impl FizzBuzz for Contract {
fn fizzbuzz(input: u64) -> FizzBuzzResult {
if input % 15 == 0 {
FizzBuzzResult::FizzBuzz
} else if input % 3 == 0 {
FizzBuzzResult::Fizz
} else if input % 5 == 0 {
FizzBuzzResult::Buzz
} else {
FizzBuzzResult::Other(input)
}
}
}