🐷
[Astar]コントラクト備忘録⑥( 戻り値にOption型を使う)
こちらの知見がたまったので、備忘録として残します。
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