Meh*_*ari 47
Some
不是关键字.option
然而,有一种类型,它是一个包含两件事的歧视联盟:
Some
它包含某种类型的值.None
这代表缺乏价值.它被定义为:
type 'a option =
| None
| Some of 'a
Run Code Online (Sandbox Code Playgroud)
它有点像可空类型,你想拥有一个可以保存某种类型的值或根本没有值的对象.
let stringRepresentationOfSomeObject (x : 'a option) =
match x with
| None -> "NONE!"
| Some(t) -> t.ToString()
Run Code Online (Sandbox Code Playgroud)
可以查看F#中的Discriminated Unions,了解有关DU的更多信息,特别是选项类型(Some,None).正如之前的回答所说,Some只是一个选项<'a>类型的联合案例,它是代数数据类型的一个特别常见/有用的例子.
小智 6
Some
用于指定选项类型,或者换句话说,可能存在或可能不存在的类型。
F# 与大多数语言的不同之处在于,控制流主要通过模式匹配完成,而不是传统的 if/else 逻辑。
在传统的 if/else 逻辑中,您可能会看到如下内容:
if (isNull(x)) {
do ...
} else { //x exists
do ...
}
Run Code Online (Sandbox Code Playgroud)
使用模式匹配逻辑,如果值为空,或者在 F# 语法中,匹配我们需要一种类似的方式来执行某些代码, None
因此,我们将拥有与以下相同的代码
match x with
| None -> do ...
| Some x -> do ...
Run Code Online (Sandbox Code Playgroud)