Отложенные выражения
Отложенные выражения — это выражения, которые не вычисляются немедленно, но оцениваются при необходимости. Это может помочь повысить производительность кода.
Синтаксис
let identifier = lazy ( expression )
Замечания
В предыдущем синтаксисе выражение — это код, вычисляющийся только при необходимости результата, а идентификатор — это значение, которое сохраняет результат. Значение типа 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
тип, также используется для последовательностей. Дополнительные сведения см. в разделе "Последовательности".