Бөлісу құралы:


Отложенные выражения

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

Синтаксис

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#.

См. также