Aracılığıyla paylaş


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 option

    Geç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ü:'State

    Baş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

Ayrıca bkz.

Başvuru

Collections.Seq Modülü (F#)

Microsoft.FSharp.Collections İsim Uzayı (F#)