Поделиться через


Функция Option.fold<'T,'State> (F#)

Вычисляет эквивалент List.fold для параметра.

Пространство имен/путь к модулю: Microsoft.FSharp.Core.Option

Сборка: FSharp.Core (в FSharp.Core.dll)

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

// Usage:
fold folder state option

Параметры

  • folder
    Тип: 'State -> 'T -> 'State

    Функция, обновляющая данные состояния при значения из параметра.

  • state
    Тип: 'State

    Начальное состояние.

  • option
    Тип: 'T option

    Входной параметр.

Возвращаемое значение

Первоначальное состояние, если параметр option имеет значение None; в противном случае возвращается обновленное состояние с функцией, определенной параметром folder, и значением параметра option.

Заметки

Выражение fold f s inp означает match inp with None -> s | Some x -> f s x.

В скомпилированных сборках имя этой функции — Fold. При обращении к функции из языка, отличного от F#, или посредством отражения следует использовать это имя.

Пример

В следующем примере кода демонстрируется использование функции 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

  

Платформы

Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows XP с пакетом обновления 3 (SP3), Windows XP x64 с пакетом обновления 2 (SP2), Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 2 (SP2)

Сведения о версии

Среда выполнения F#

Поддерживается в версиях 2.0, 4.0

Silverlight

Поддерживается в версии 3

См. также

Ссылки

Модуль Core.Option (F#)

Пространство имен Microsoft.FSharp.Core (F#)

Журнал изменений

Дата

Журнал

Причина

Май 2010

Добавлен пример кода.

Улучшение информации.