2009-01-16 8 views

Antwort

41

Some ist kein Schlüsselwort. Es gibt eine option Art aber, die eine diskriminierte Vereinigung, die zwei Dinge:

  1. Some, die einen Wert eines Typs hält.
  2. None, die den fehlenden Wert darstellt.

Es ist wie folgt definiert:

type 'a option = 
    | None 
    | Some of 'a 

Es Art wie ein Nullable Type wirkt, wo Sie ein Objekt haben wollen, die einen Wert von etwas Art halten kann oder überhaupt keinen Wert.

let stringRepresentationOfSomeObject (x : 'a option) = 
    match x with 
    | None -> "NONE!" 
    | Some(t) -> t.ToString() 
7

Discriminated Unions in F# überprüfen können für weitere Informationen über DUs im Allgemeinen und die Option Typ (Manchmal, Keine) im Besonderen. Wie eine vorherige Antwort sagt, ist Some nur ein Union-Case der Option < 'a> type, was ein besonders häufiges/nützliches Beispiel für einen algebraischen Datentyp ist.

1

Some wird verwendet, um eine Option Typ anzugeben, oder mit anderen Worten, ein Typ, der vorhanden sein kann oder nicht.

F # unterscheidet sich von den meisten Sprachen in dieser Steuerfluss wird hauptsächlich durch Muster getan traditionellen if/else Logik im Gegensatz Matching.

In der traditionellen if/else-Logik, Sie etwas sehen können:

If (isNull(x)) { do ...
} else { //x exists do ...
}

Mit Mustern Logik passend, schneiden wir bestimmten Code ausführen müssen eine ähnliche Art und Weise, wenn ein Wert Null ist, oder in F # Syntax, Keine

so würden wir den gleichen Code wie

haben

match x with | None -> do ... | Some x -> do ...