Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Отложенные выражения — это выражения, которые не вычисляются немедленно, но оцениваются при необходимости. Это может помочь повысить производительность кода.
Синтаксис
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 тип, также используется для последовательностей. Дополнительные сведения см. в разделе "Последовательности".
Formatting
Для многострочный отложенных выражений поместите открываемую скобку в ту же строку, что lazy и ключевое слово, а текст выражения отступил один уровень:
let expensiveCalculation =
lazy (
let step1 = performStep1()
let step2 = performStep2 step1
step2 * 2
)
Дополнительные сведения о форматировании отложенных выражений см. в руководстве по форматированию F#.