F# 关键字 ' Some ' - 这是什么意思?
Vlad
问问题
9358 次
3 回答
51
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()
于 2009-01-16T12:56:15.020 回答
8
可以查看F# 中的区分联合,以获取有关 DU 的更多信息,特别是选项类型(一些,无)。正如前面的回答所说, Some 只是 option<'a> 类型的联合情况,这是代数数据类型的一个特别常见/有用的例子。
于 2009-01-16T13:48:03.807 回答
7
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 ...
于 2017-08-11T19:20:46.920 回答