1

如果我@x在父类中延迟加载A它可以调用和初始化就好了,但是如果我尝试从A子类调用它B,那么它不会调用@x初始化方法并返回nil。这是为什么?

class A
  def x
    @x ||= 'x'
  end
end

puts A.new.x # 'x'

class B < A
  def use_x
    puts @x.inspect # nil
  end
end
4

2 回答 2

2

使用x而不是直接访问实例变量@a

class B < A
  def use_x
    puts x.inspect
  end
end
于 2013-08-07T03:07:23.063 回答
0

因为该方法x不是在use_x. 不管是A不是B无关紧要。puts B.new.x会给出与 . 相同的结果puts A.new.x

于 2013-08-07T03:19:31.930 回答