如何从ruby中的内部类访问外部类的类变量
我在下面的Ruby中有一些代码:
class A @@lock = Monitor.new class B def method @@lock.synchronize puts "xxxxx" end end end end
运行后抛出一个错误,如下所示:
未初始化的类变量@@ lock in A :: B(NameError)
如果我想知道如何从内部类B的方法访问外部类A的类变量@@ lock,该怎么做? 先感谢您。
访问此类变量的唯一方法是通过访问器方法
class A def self.lock @@lock ||= Monitor.new end class B def method A.lock.synchronize puts "xxxxx" end end end end
如果没有定义访问者,我认为你不能。
B
类在A内部具有词法范围,因此它的真名是A :: B,其他各种不同。
但它不是一个孩子或任何其他类型的派生类,因此它实际上没有任何特殊权利来查看A的私有或受保护或本地元素。