Ily*_*lya -1 ruby metaprogramming
在 Ruby 中,我们有两种方法来获取/设置实例变量 -instance_variable_get和instance_variable_set. 此外,在某些情况下,记住实例变量是一种很好的做法:
@foo ||= 'bar'
Run Code Online (Sandbox Code Playgroud)
因此,我尝试将这 2 个功能结合起来,因为我需要动态实例变量名称:
iv = :@foo
instance_variable_set(iv, 'bar') unless instance_variable_get(iv)
Run Code Online (Sandbox Code Playgroud)
我不确定,但是有没有更优雅的方式来写这个?
延迟评估实例变量
这不是“懒惰评价”,这是“记忆化”。
有没有更优雅的方式来写这个?
这读起来更像原始表达式(实际上相当于它的行为):
instance_variable_get(:@foo) || instance_variable_set(:@foo, 'bar')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
559 次 |
| 最近记录: |