Option
Option
OCamlのOptionと同様に、ScillaのOptionは値の存在を表す手段を提供しています。
Optionには2つのコンストラクタNoneとSomeがあります。
Someは値が存在することを表します。
Some {'A} xは'A型のxが存在することを表します。
下記は、Int32型の数値10をtenとしてOptionSomeを宣言しています。
let x =
let ten = Int32 10 in
Some {Int32} 10
None は値が存在しないことを表します。
None {'A}は'A型が存在しないことを表します。
下記は、ByStr20型の数値をが存在しないことをOptionNoneを宣言しています。
x = None {ByStr20}
これらは変更可な変数の初期化にも使われます。
field empty_bool : Option Bool : None {Bool}
ADT型に利用するには()が必要となります。
let one = Int32 1 in
x = Some {(Pair Int32 Int32)} one one
これらはMapから値を取得する際に頻繁に利用されます。
※これはMapから値を取得する際に、キー値に紐づく値を取得できるかは確定されていないためです。
(*Assume m = Map ByStr20 Int32 that contains a key value pair of _sender data*)
getValue = builtin get m _sender;
match getValue with
| Some v =>
v = v + v;
statements...
| None =>
statements...
end
引用元:scilla-lang.org