Wyrażenia z opóźnionym obliczaniem
Wyrażenia z opóźnieniem to wyrażenia , które nie są obliczane natychmiast, ale zamiast tego są oceniane, gdy wynik jest potrzebny. Może to pomóc zwiększyć wydajność kodu.
Składnia
let identifier = lazy ( expression )
Uwagi
W poprzedniej składni wyrażenie to kod, który jest obliczany tylko wtedy, gdy wynik jest wymagany, a identyfikator jest wartością, która przechowuje wynik. Wartość jest typu Lazy<'T>
, gdzie rzeczywisty typ używany dla 'T
jest określany na podstawie wyniku wyrażenia.
Wyrażenia z opóźnieniem umożliwiają zwiększenie wydajności przez ograniczenie wykonywania wyrażenia tylko do tych sytuacji, w których potrzebny jest wynik.
Aby wymusić wykonywanie wyrażeń, należy wywołać metodę Force
. Force
powoduje wykonanie tylko raz. Kolejne wywołania zwracają Force
ten sam wynik, ale nie wykonują żadnego kodu.
Poniższy kod ilustruje użycie leniwych wyrażeń i użycie metody Force
. W tym kodzie typ result
to Lazy<int>
, a Force
metoda zwraca int
wartość .
let x = 10
let result = lazy (x + 10)
printfn "%d" (result.Force())
Ocena leniwa, ale nie Lazy
typ, jest również używana dla sekwencji. Aby uzyskać więcej informacji, zobacz Sekwencje.