Udostępnij za pośrednictwem


SEQ.unfold < "Państwo,'T > Funkcja (F#)

Zwraca sekwencja zawiera elementy generowane przez danego obliczenia.

Ścieżka obszaru nazw/modułu: Microsoft.FSharp.Collections.Seq

Zestaw: FSharp.Core (w 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

    Funkcja, która przyjmuje bieżący stan i zwraca krotka opcji następnego elementu w sekwencji i wartość następnego stanu.

  • state
    Typ:'State

    Wartość stanu początkowego.

Wartość zwracana

Sekwencja wynik.

Uwagi

Początkowy danego state przekazany argument generator elementu.Dla każdego IEnumerator elementy w strumieniu są generowane na żądanie przez zastosowanie generatora element do None wartość jest zwracana przez generator elementu.Każde wywołanie element generator zwraca nowy resztkowego state.

Strumień będą przeliczane przy każdym IEnumerator jest wymagane i podstawy w sekwencji.Sekwencja zwracane mogą być przekazywane między wątki bezpiecznie.Jednakże poszczególnych IEnumerator wygenerowany z sekwencji zwracane wartości nie jest dostępna jednocześnie.

Ta funkcja o nazwie Unfold w skompilowane zestawy.Jeżeli języka, niż F# lub przez odbicie, uzyskują dostęp do funkcji, należy użyć tej nazwy.

Przykład

Poniższy kod demonstruje użycie Seq.unfold do generowania sekwencji dwóch.Pierwszy generuje tylko sekwencji liczb całkowitych.Drugi generuje sekwencji liczb Fibonacciego składają się przez dodanie dwóch poprzednich liczb w sekwencji.Pierwsze dwie cyfry w sekwencji Fibonacciego są (1, 1), początkowe formularze state parametru.Stan na każdym kroku składa się z dwóch liczb, którego suma produkuje następny numer Fibonacciego.

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

Informacje o wersji

F# Core wersji biblioteki

Obsługiwane: 2.0, 4.0, przenośne

Zobacz też

Informacje

Moduł Collections.SEQ (F#)

Obszar nazw Microsoft.FSharp.Collections (F#)