Compartir a través de


Option.fold<'T,'State> (Función de F#)

Evalúa el equivalente de List.fold para una opción.

Espacio de nombres/Ruta de acceso del módulo: Microsoft.FSharp.Core.Option

Ensamblado: FSharp.Core (en FSharp.Core.dll)

// Signature:
fold : ('State -> 'T -> 'State) -> 'State -> 'T option -> 'State

// Usage:
fold folder state option

Parámetros

  • folder
    Tipo: 'State -> 'T -> 'State

    Función para actualizar los datos de estado cuando se proporciona un valor en una opción.

  • state
    Tipo: 'State

    Estado inicial.

  • option
    Tipo: 'T opción

    Opción de entrada.

Valor devuelto

Devuelve el estado original si la opción es None; de lo contrario, devuelve el estado actualizado con la carpeta y el valor de la opción.

Comentarios

El resultado de evaluar la expresión fold f s inp es match inp with None -> s | Some x -> f s x.

Esta función se denomina Fold en los ensamblados compilados. Si obtiene acceso a la función desde un lenguaje distinto de F# o mediante reflexión, use este nombre.

Ejemplo

En el código siguiente, se muestra el uso de Option.fold.

let consOption list opt =
    Option.fold (fun state value -> value :: state) list opt
printfn "%A" <| consOption [1 .. 10] None
printfn "%A" <| consOption [1 .. 10] (Some(0))

// Read input from the console, and if the input parses as
// an integer, cons to the list.
let readNumber () =
    let line = System.Console.ReadLine()
    let (success, value) = System.Int32.TryParse(line)
    if success then Some(value) else None
let mutable list1 = []
let mutable count = 0
while count < 5 do
    printfn "Enter a number: "
    list1 <- consOption list1 (readNumber())
    printfn "New list: %A" <| list1
    count <- count + 1

Output

  

Plataformas

Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

Información de versiones

Runtime de F#

Se admite en las versiones: 2.0, 4.0

Silverlight

Se admite en la versión: 3

Vea también

Referencia

Core.Option (Módulo de F#)

Microsoft.FSharp.Core (Espacio de nombres de F#)

Historial de cambios

Fecha

Historial

Motivo

Mayo de 2010

Se ha agregado un ejemplo de código.

Mejora de la información.