Megosztás a következőn keresztül:


Lusta kifejezések

A lusta kifejezések olyan kifejezések, amelyek nem kerülnek azonnal kiértékelésre, hanem az eredmény szükség esetén lesznek kiértékelve. Ez segíthet a kód teljesítményének javításában.

Szemantika

let identifier = lazy ( expression )

Megjegyzések

Az előző szintaxisban a kifejezés olyan kód, amely csak akkor lesz kiértékelve, ha eredményre van szükség, az azonosító pedig az eredményt tároló érték. Az érték típus Lazy<'T>, ahol a kifejezés eredménye határozza meg a tényleges 'T típust.

A lusta kifejezések lehetővé teszik a teljesítmény javítását azáltal, hogy egy kifejezés végrehajtását csak azokra a helyzetekre korlátozza, amelyekben eredményre van szükség.

A kifejezések végrehajtásának kényszerítéséhez hívja meg a metódust Force. Force a végrehajtást csak egyszer hajtja végre. A későbbi hívások ugyanannak az eredménynek a visszaadására Force szolgálnak, de nem hajtanak végre semmilyen kódot.

Az alábbi kód a lusta kifejezések használatát és a használatot Forcemutatja be. Ebben a kódban a típus result az Lazy<int>, és a Force metódus egy int.

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

Lusta kiértékelés, de nem a Lazy típus, a szekvenciákhoz is használható. További információ: Szekvenciák.

Formatting

Többsoros lusta kifejezések esetén helyezze a nyitó zárójelet a kulcsszóval megegyező sorba lazy , a kifejezés törzse pedig egy szinttel behúzva:

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

A lusta kifejezések formázásával kapcsolatos további információkért tekintse meg az F# formázási útmutatót.

Lásd még