Udostępnij za pośrednictwem


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 intwartość .

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.

Zobacz też