选项表示有两种取值的状态:有值或者无值。
有值用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
这种结构通常被用来实现异常控制。
更多的选项静态类型函数的使用可以参考书籍。