Icon LinkFizzBuzz

这个示例不是传统的 FizzBuzz Icon Link;相反,它是智能合约版本!一个脚本可以调用这个合约的 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)
        }
    }
}