Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese
Questa documentazione è stata archiviata e non viene gestita.

Funzione Seq.unfold<'State,'T> (F#)

Restituisce una sequenza che contiene gli elementi generati dal calcolo specificato.

Percorso spazio dei nomi/modulo: Microsoft.FSharp.Collections.Seq

Assembly: FSharp.Core (in FSharp.Core.dll)

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

// Usage:
Seq.unfold generator state

generator

Tipo: 'State -> 'T * 'State option

Funzione che utilizza lo stato corrente e restituisce una tupla di opzione dell'elemento successivo della sequenza e il successivo valore di stato.

state

Tipo: 'State

Valore di stato iniziale.

Sequenza risultante.

L'argomento state iniziale specificato viene passato al generatore di elementi. Per ogni IEnumerator vengono generati su richiesta elementi nel flusso applicando il generatore di elementi, finché quest'ultimo non restituisce un valore None. Ogni chiamata al generatore di elementi restituisce un nuovo elemento state residuo.

Il flusso verrà ricalcolato ogni volta che un IEnumerator viene richiesto e iterato per la sequenza. La sequenza restituita può essere passata in modo sicuro tra thread. L'accesso ai singoli valori IEnumerator generati dalla sequenza restituita non deve essere tuttavia eseguito in modo simultaneo.

Questa funzione è denominata Unfold negli assembly compilati. Utilizzare questo nome se si accede alla funzione da un linguaggio diverso da F# o tramite reflection.

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare Seq.unfold per generare due sequenze. Il primo genera semplicemente una sequenza di numeri interi. Il secondo genera una sequenza di numeri di Fibonacci, costituiti aggiungendo i due numeri precedenti nella sequenza. I primi due numeri nella sequenza di Fibonacci, che costituisce il parametro state iniziale, sono (1, 1). Lo stato a ogni passaggio è costituito da due numeri la cui somma produce il numero di Fibonacci successivo.


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


            
              La sequenza seq1 contiene i numeri da 0 a 20.
            
            
              
  
    

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

La sequenza fib contiene i numeri di Fibonacci.

2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

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

Versioni della libreria di base F#

Supportato in: 2,0, 4,0, portabile

Mostra: