Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.