Seq.unfold<'State,'T> İşlevi (F#)
Verilen hesaplama tarafından oluşturulan öğeleri içeren bir dizi döner.
Ad alanı/modül yolu: Microsoft.FSharp.Collections.Seq
Derleme: FSharp.Core (FSharp.Core.dll),
// Signature:
Seq.unfold : ('State -> 'T * 'State option) -> 'State -> seq<'T>
// Usage:
Seq.unfold generator state
Parametreler
generator
Türü:'State -> 'T * 'State optionGeçerli durumu alıp bir seçenek kayıt düzeni sonraki öğenin serisi ve sonraki durumu değeri döndüren bir işlevdir.
state
Türü:'StateBaşlangıç durum değeri.
Dönüş Değeri
Sonuç dizisi.
Notlar
Verilen ilk state bağımsız değişkeni öğe oluşturucuya geçirilir. Her IEnumerator Akımdaki öğeleridir oluşturulan isteğe bağlı kadar öğe generator uygulayarak bir None değeri öğesinin üreticisi tarafından verilir. Öğesi oluşturucusuna her çağrı yeni bir state döner.
Akış her zaman recomputed bir IEnumerator istedi ve sıra için iterated. Döndürülen dizi iş parçacıkları arasında güvenle geçirilebilir. Bununla birlikte, tek tek IEnumerator döndürülen serisinden oluşturulan değerler değil erişilen aynı anda.
Bu işlev adlı Unfold kodları derlenmiş derlemeleri. İşlev yansıtma veya F# dışındaki bir dilde erişiyorsanız, bu adı kullanın.
Örnek
Aşağıdaki kodu kullanımını gösteren Seq.unfold iki dizileri oluşturmak için. İlk yalnızca tamsayılar dizisi oluşturur. İkinci sırada iki önceki sayıları ekleyerek oluşan Fibonacci sayı dizisi oluşturur. Fibonacci dizisindeki ilk iki sayı, başlangıç formları (1, 1) olan state parametresi. Her adımında durumu olan toplam sonraki Fibonacci sayı üreten iki sayıdan 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 Bilgisi
F# Çekirdek Kitaplığı sürümleri
Desteklenen: 2.0, 4.0, Portable