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