2009-01-16 28 views

Respuesta

41

Some no es una palabra clave. Hay un tipo de option sin embargo, que es una unión discriminada contiene dos cosas:

  1. Some que tiene un valor de algún tipo.
  2. None que representa la falta de valor.

Se define como:

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

Actúa como una especie de tipo anulable, en la que desea tener un objeto que puede contener un valor de algún tipo o no tienen ningún valor en absoluto.

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

puede comprobar fuera de Discriminated Unions in F# para obtener más información sobre los UI en general y el tipo de opción (A veces, Nulo) en particular. Como dice una respuesta anterior, Some es solo un caso de unión de la opción < 'a> type, que es un ejemplo particularmente común/útil de un tipo de datos algebraicos.

1

Some se utiliza para especificar un tipo de opción, o en otras palabras, un tipo que puede existir o no.

F # es diferente de la mayoría de los idiomas en los que el flujo de control se realiza principalmente a través coincidencia de patrón en contraposición a los tradicionales if/else lógica.

En tradicional si/lógica otra cosa, usted puede ver algo como esto:

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

Con patrón de coincidencia lógica, igualando necesitamos una manera similar a ejecutar cierto código si un valor es nulo, o en F # sintaxis, Ninguno

Así tendríamos el mismo código que

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

Cuestiones relacionadas