Oop 懒散的加载vs猛击?

Oop 懒散的加载vs猛击?,oop,functional-programming,lazy-loading,lazy-evaluation,Oop,Functional Programming,Lazy Loading,Lazy Evaluation,最近我听到了这两个词的定义,对我来说,它们听起来是一样的。thunk和Lazy load是一回事吗?如果没有,这两个定义之间有什么区别?使用以下定义: 延迟加载 延迟加载是计算机编程中常用的一种设计模式,它将对象的初始化延迟到需要时 Thunk thunk是一个未赋值的表达式,通常表示为堆上带有绑定变量和代码指针(闭包)的对象。惰性计算将thunks替换为更多计算的形式(简单类型的纯值,但其他情况下是计算的外部结构,可能是未计算的内部内容,即弱头范式)。这种替换是破坏性的,即评估的副作用 您可能

最近我听到了这两个词的定义,对我来说,它们听起来是一样的。thunk和Lazy load是一回事吗?如果没有,这两个定义之间有什么区别?

使用以下定义:

延迟加载

延迟加载是计算机编程中常用的一种设计模式,它将对象的初始化延迟到需要时

Thunk

thunk是一个未赋值的表达式,通常表示为堆上带有绑定变量和代码指针(闭包)的对象。惰性计算将thunks替换为更多计算的形式(简单类型的纯值,但其他情况下是计算的外部结构,可能是未计算的内部内容,即弱头范式)。这种替换是破坏性的,即评估的副作用

您可能会说“延迟加载”是一种将面向对象语言中的计算推迟到第一次需要对象时的方法。当需要该值时,将计算整个对象

thunk的相似之处在于它是一种推迟函数式编程语言中任何表达式求值的方法。当需要时,thunk被替换为其评估内容,这可能是另一个thunk。在像Haskell这样的语言中,所有的值(名义上)都由thunks表示,这使得每个计算步骤都可能是惰性的

它们是实现相同最终目标的大致相似的机制:非严格评估