選項表示有兩種取值的狀態:有值或者無值。
有值用Some()取值。我終於知道前面的學習Some是什麼意思了……
無值用關鍵字None表示。
- 定義選項常量
let x1 : int option = Some(2)
let x2 : int option = None
結果爲:
val x1 : int option = Some 2
val x2 : int option = None
int選項的函數特徵是:int option.
- 定義函數類型的選項
let keepIfPositive (a:int) = if a>0 then Some(a) else None
let x1 = keepIfPositive 12
let x2 = keepIfPositive 0
let x3 = keepIfPositive -12
結果爲:
val keepIfPositive : a:int -> int option
val x1 : int option = Some 12
val x2 : int option = None
val x3 : int option = None
- 選項模式匹配
let exists (x : int option) =
match x with
| Some(x) -> true
| None -> false
let x1 = exists (Some(22))
let x2 = exists None
結果爲:
val exists : x:int option -> bool
val x1 : bool = true
val x2 : bool = false
這種結構通常被用來實現異常控制。
更多的選項靜態類型函數的使用可以參考書籍。