Sdílet prostřednictvím


Seq.unfold<'State,'T> – funkce (F#)

Vrací posloupnost obsahující prvky generovaných danou výpočtu.

Obor názvů/modulu cesta: Microsoft.FSharp.Collections.Seq

Sestavení: FSharp.Core (v FSharp.Core.dll)

// Signature: Seq.unfold : ('State -> ('T * 'State) option) -> 'State -> seq<'T>  // Usage: Seq.unfold generator state

Parametry

  • generator
    Typ: 'State -> 'T * 'State option

    Funkce, která přebírá aktuální stav a vrátí řazené kolekce členů možnost Další elementu sekvence a další hodnoty stavu.

  • state
    Typ: 'State

    Hodnota počátečního stavu.

Vrácená hodnota

Posloupnost výsledek.

Poznámky

Daný počátečního state argument je předán generátor elementu.Pro každou IEnumerator prvky v datovém proudu jsou generované na vyžádání použitím generátor element až None generátorem elementu je vrácena hodnota.Každé volání generátor element vrátí novou zbytková state.

Datový proud bude přepočítávány pokaždé, když IEnumerator je požadováno a vstupní pro pořadí.Vrácená sekvence může být předána mezi vlákny bezpečně.Nicméně jednotlivé IEnumerator hodnoty generované ze vrácená sekvence nesmí současně získat přístup.

Tato funkce se nazývá Unfold v kompilované sestavení.Pokud se připojujete funkce v jiném jazyce než v jazyce F # nebo prostřednictvím reflexe, použijte tento název.

Příklad

Následující kód ukazuje použití Seq.unfold ke generování dvě sekvence.První právě generuje sekvence celých čísel.Druhý vygeneruje posloupnost čísel Fibonacciho, které se skládají přidáním dvě čísla předchozí v pořadí.První dvě čísla v sekvenci Fibonacciho jsou (1, 1), které tvoří počáteční state parametru.Stav v každém kroku se skládá ze dvou čísel, jejichž součet vytváří další Fibonacciho číslo.

let seq1 = Seq.unfold (fun state -> if (state > 20) then None else Some(state, state + 1)) 0
printfn "The sequence seq1 contains numbers from 0 to 20." 
for x in seq1 do printf "%d " x
let fib = Seq.unfold (fun state ->
    if (snd state > 1000) then None
    else Some(fst state + snd state, (snd state, fst state + snd state))) (1,1)
printfn "\nThe sequence fib contains Fibonacci numbers." 
for x in fib do printf "%d " x
        

Platformy

Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Informace o verzi

Verze základní knihovny F#

Podporováno ve verzích: 2.0, 4.0, Portable

Viz také

Referenční dokumentace

Collections.Seq – modul (F#)

Microsoft.FSharp.Collections – obor názvů (F#)