Mat*_*zke 1 ruby ruby-on-rails-4
我经常使用|| =运算符来减少冗余调用.我想采取这样的事情
@my_variable ||= my_calculation_method
把它变成
@my_variable.assign { code_block }
用这个想法
class Object
    def assign
      if self.instance_of? NilClass
          self = yield
      end
    end
end
正如您可能已经猜到的那样,分配self没有意义并且不起作用.
你如何访问方法中的@my_variable指针assign来修改值?
如果你的初始化逻辑是非常重要的并跨越几行(我认为,这是问题的前提),这就是你能做的,在惯用的ruby中:
@my_variable ||= begin
  # code block
end
我通常做的是将逻辑拆分为两部分.记忆与计算分开.你在第一行就有这个.
def stats
  @stats ||= compute_stats
end
def compute_stats
  ...
end
我发现XXX + compute_XXX的这种模式很容易识别/跟随.