Seq.unfold<'State,'T> İşlevi (F#)

Verilen hesaplama tarafından oluşturulan öğeleri içeren bir dizi döndürür.

Ad alanı/modül yolu: Microsoft.FSharp.Collections.Seq

Derleme: FSharp.Core (FSharp.Core.dll içinde)

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

Parametreler

  • generator
    Tür: 'State -> 'T * 'State option

    Geçerli durumu alan ve bir seçenek tanımlama grubu sonraki öğenin sıralamadaki ve sonraki durumu değeri döndüren bir işlev.

  • state
    Tür: 'State

    İlk durumu değeri.

Dönüş Değeri

Sonuç dizisi.

Notlar

Belirtilen ilk state bağımsız değişkeni öğe oluşturucuya geçirilir.Her IEnumerator öğeleri akışında kadar öğe oluşturucusunu uygulayarak oluşturulan isteğe bağlı olan bir None öğesi Oluşturucu tarafından döndürülen değer.Yeni bir fazlalığı öğesi oluşturucusuna her çağrı döndürür state.

Akış her zaman hesaplanacaktır bir IEnumerator istenen ve için sıra yinelendiğinde.Döndürülen dizi iş parçacıkları arasında güvenle geçirilebilir.Ancak, tek tek IEnumerator değerleri döndürülen serisinden oluşturulan erişilemez aynı anda.

Bu işlev adlı Unfold derlenmiş derlemeler.İşlev farklı bir dili F #, yansıma aracılığıyla erişiyorsanız bu adı kullanın.

Örnek

Aşağıdaki kod kullanımını gösterir Seq.unfold iki diziyi oluşturmak için.İlk yalnızca bir tamsayı dizisini oluşturur.İkinci Fibonacci numaraları, iki önceki sayıları sırada ekleyerek oluşan bir dizi oluşturur.Fibonacci sıralamadaki ilk iki sayı, ilk forms misiniz (1, 1), state parametresi.Her adımında durumu sonraki Fibonacci sayısı, toplam üretir iki numaralarını oluşur.

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
        

Platformlar

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

Sürüm Bilgileri

F# Çekirdek Kitaplık Sürümleri

Desteklendiği sürümler: 2.0, 4.0, Taşınabilir

Ayrıca bkz.

Başvuru

Collections.Seq Modülü (F#)

Microsoft.FSharp.Collections Ad Alanı (F#)