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 optionFunkce, která přebírá aktuální stav a vrátí řazené kolekce členů možnost Další elementu sekvence a další hodnoty stavu.
state
Typ: 'StateHodnota 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