F#keyword'Some'

时间:2009-01-16 12:51:55

标签: f# keyword

F#keyword'一些' - 这是什么意思?

3 个答案:

答案 0 :(得分:45)

Some不是关键字。然而,有option类型,这是一个有区别的联合,包含两件事:

  1. Some,其中包含某种类型的值。
  2. None代表缺乏价值。
  3. 它被定义为:

    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 ...