动态惰性实例变量记忆
Dynamic lazy instance variable memoization
在 Ruby 中,我们有 2 个 get/set 实例变量的方法 - instance_variable_get
和 instance_variable_set
。同样在某些情况下,记住实例变量是一个好习惯:
@foo ||= 'bar'
因此,我尝试将这 2 个功能结合起来,因为我需要动态实例变量名称:
iv = :@foo
instance_variable_set(iv, 'bar') unless instance_variable_get(iv)
我不确定,但是有没有更优雅的写法?
to lazy evaluate instance variables
这不是 "lazy evaluation",这是 "memoization"。
is there more elegant way to write this?
这读起来更像原始表达式(实际上在行为上等同于它):
instance_variable_get(:@foo) || instance_variable_set(:@foo, 'bar')
在 Ruby 中,我们有 2 个 get/set 实例变量的方法 - instance_variable_get
和 instance_variable_set
。同样在某些情况下,记住实例变量是一个好习惯:
@foo ||= 'bar'
因此,我尝试将这 2 个功能结合起来,因为我需要动态实例变量名称:
iv = :@foo
instance_variable_set(iv, 'bar') unless instance_variable_get(iv)
我不确定,但是有没有更优雅的写法?
to lazy evaluate instance variables
这不是 "lazy evaluation",这是 "memoization"。
is there more elegant way to write this?
这读起来更像原始表达式(实际上在行为上等同于它):
instance_variable_get(:@foo) || instance_variable_set(:@foo, 'bar')