🐷

[Astar]コントラクト備忘録⑥( 戻り値にOption型を使う)

2023/02/23に公開

こちらの知見がたまったので、備忘録として残します。

1 概要

  1. Option型の実装

2 内容

こちらのメッセージを作成しました。

/// divide
        #[ink(message)]
        pub fn divide(&self, dividend: u32, divisor: u32) -> Option<u32> {
            if divisor == 0 {
                None
            } else {
                Some(dividend / divisor)
            }
        }

Optionは下のような列挙型です。

https://doc.rust-lang.org/std/option/enum.Option.html

このように、Someの結果がu32の型なので、下のように、返り値の型がu32となっています。

このように、divisor(割る数)が0でなければ、通常の計算を行います。

0であれば、下のように、特にエラーにはならず、nullを返していることがわかります。

Shibuya

ZLi9r4rJDoc5BT9pmpNDBJbWX6jSrUAvSJ3UW27CMFEdyNC

その後、Optionは引数で使うことが多いと分かったので追記です。

#[ink(message)]
        pub fn get_number(&self, number: Option<u32>) -> Option<u32> {
            if let Some(num) = number {
                Some(num)
            } else {
                None
            }
        }

今回は、以上です。

Discussion