【发布时间】:2021-10-19 12:25:57
【问题描述】:
我有一个共同的模式:
type something =
{
... a lot of stuff
}
member this.Description =
"a string description of the content, can be long tables, etc"
我希望仅在需要时评估 Description 属性;在许多情况下,它不会被使用,但它可以(主要是根据用户的请求)。
我注意到,即使不需要,此代码也会导致对 Description 进行评估。所以我把代码移到了一个函数中:Describe() 就解决了问题。
在重构时,我正在重新审视这一点。虽然它在实践中不会让任何事情变得更好,但我想知道是否有类似的东西:
member this.Describe =
(lazy "the long to build text output").Value
能解决问题吗?因为惰性对象将被创建,但没有任何东西可以查询值本身。
这会可靠吗?
【问题讨论】:
-
这里没有实际问题。
-
我一直试图避免的问题是重新执行字符串的创建。
-
啊,我明白了。我第一次读这篇文章时错过了重点。
标签: f# lazy-evaluation