Condividi tramite


Espressioni differita

Le espressioni lazy sono espressioni che non vengono valutate immediatamente, ma vengono invece valutate quando è necessario il risultato. Ciò consente di migliorare le prestazioni del codice.

Sintassi

let identifier = lazy ( expression )

Osservazioni:

Nella sintassi precedente l'espressione è il codice valutato solo quando è necessario un risultato e l'identificatore è un valore che archivia il risultato. Il valore è di tipo Lazy<'T>, dove il tipo effettivo utilizzato per 'T viene determinato dal risultato dell'espressione.

Le espressioni differita consentono di migliorare le prestazioni limitando l'esecuzione di un'espressione solo a quelle situazioni in cui è necessario un risultato.

Per forzare l'esecuzione delle espressioni, chiamare il metodo Force. Force fa sì che l'esecuzione venga eseguita una sola volta. Le chiamate successive per Force restituire lo stesso risultato, ma non eseguono codice.

Il codice seguente illustra l'uso di espressioni lazy e l'uso di Force. In questo codice il tipo di result è e il Lazy<int> metodo restituisce un oggetto Forceint.

let x = 10
let result = lazy (x + 10)
printfn "%d" (result.Force())

La valutazione differita, ma non il Lazy tipo, viene usata anche per le sequenze. Per altre informazioni, vedere Sequenze.

Formattazione

Per le espressioni lazy su più righe, posizionare la parentesi di apertura sulla stessa riga della lazy parola chiave, con il corpo dell'espressione rientrato un livello:

let expensiveCalculation =
    lazy (
        let step1 = performStep1()
        let step2 = performStep2 step1
        step2 * 2
    )

Per altre informazioni sulla formattazione delle espressioni lazy, vedere la guida alla formattazione di F#.

Vedere anche