1
3
记忆不会在结构内部发生。记忆的方法是储存一本字典 在一个单独的地方 . 关键是在推导这个值的过程中用到了什么,这个值就是这个值,计算一次。您可以将其设置为结构类型的静态,就像对其进行命名空间一样。
|
2
2
我唯一知道的办法就是把懒惰的成员包装到一个类中。这样,包含对象引用的结构可以保持不变,而对象本身可以发生变化。 几年前我写了一篇关于这个话题的博文: Lazy Properties in Structs . 它详细讨论了细节,并为包装类的设计提出了两种不同的方法,这取决于懒惰成员是否需要来自结构的实例信息来计算缓存值。 |
3
1
我将问题概括为一个更简单的问题:一个x,y点结构,它希望惰性地计算/缓存r(adius)的值。我用ref包装器包装了一个block闭包,得到了以下结果。我称之为“一次”街区。
我选择让OnCEBULD输入一个输入,因为否则将其初始化为一个引用自身的函数是一种痛苦,因为在初始化过程中,自身还不存在,因此更容易推迟到高速缓存/调用站点的链接。
|