结构体 Foo
有许多属性 val1, val2,...
mutable struct Foo
val1
val2
end
假设有些属性使用频率少,且计算耗时,希望初始化结构体 Foo
时,这部分属性暂不定义,而在被调用时才计算,比如
Foo() = ...
foo = Foo() # 初始化
1 + foo.val1 # 被调用,foo.val1 这时才真正被赋值
2 + foo.val1 # 第二次调用,直接取值
这个情况使用场景不少,想知道 Julia 下类似技巧怎么实现,或者用别的方式替代?
附 Python 的类似方法
class Foo():
def __init__(self):
self._val1 = None
@property
def val1(self):
if self._val1 is None:
self._val1 = 0
return self._val1
@val1.setter
def val1(self, val):
self._val1 = val