Поделиться через


Отложенные вычисления (F#)

Отложенные вычисления — это вычисления, которые выполняются не немедленно, а когда фактически требуется результат.Это может помочь повысить производительность кода.

let identifier = lazy ( expression )

Заметки

В представленной выше синтаксической конструкции expression — это код, который вычисляется только тогда, когда требуется результат, а identifier — это значение, которое хранит результат.Значение имеет тип Lazy<'T>, где фактический тип, используемый для 'T, определяется по результату выражения.

Отложенные вычисления позволяют повысить производительность, ограничивая выполнение вычислений только теми ситуациями, когда действительно требуется результат.

Чтобы принудительно выполнить вычисления, нужно вызвать метод Force.Метод Force вызывает выполнение вычисления только один раз.Последующие вызовы метода Force возвращают тот же результат, но при этом не выполняется никакой код.

Следующий код иллюстрирует использование отложенного вычисления и метода Force.В этом коде результат result имеет тип Lazy<int>, и метод Force возвращает тип int.

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

Отложенные вычисления (но не тип Lazy) также используются при работе с последовательностями.Дополнительные сведения см. в разделе Последовательности (F#).

См. также

Ссылки

Модуль LazyExtensions

Другие ресурсы

Справочник по языку F#