在Ruby中,我们有两种获取/设置实例变量的方法 - instance_variable_get
和instance_variable_set
。在某些情况下,最好记住实例变量:
@foo ||= 'bar'
因此,我尝试将这2个功能联合起来,因为我需要动态实例变量名称:
iv = :@foo
instance_variable_set(iv, 'bar') unless instance_variable_get(iv)
我不确定,但有更优雅的方式来写这个吗?
答案 0 :(得分:3)
延迟评估实例变量
这不是"懒惰的评价",这是" memoization"。
有更优雅的方式来写这个吗?
这更像是原始表达式(实际上与行为中的等价物相同):
instance_variable_get(:@foo) || instance_variable_set(:@foo, 'bar')