ruby中如何从内部类访问外部类的类变量

ruby中如何从内部类访问外部类的类变量,ruby,class-variables,Ruby,Class Variables,下面我有一些Ruby代码: class A @@lock = Monitor.new class B def method @@lock.synchronize puts "xxxxx" end end end end 运行后,它会抛出一个错误,如下所示: 未初始化的类变量@锁定A::B(NameError) 如果我想知道如何从内部类B的方法访问外部类A的类变量@@lock,该如何做?提前感谢。访问此类变量的唯一方法是

下面我有一些Ruby代码:

class A
  @@lock = Monitor.new
  class B
    def method
      @@lock.synchronize
        puts "xxxxx"
      end
    end
  end
end    
运行后,它会抛出一个错误,如下所示:

未初始化的类变量@锁定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的私有、受保护或其他本地元素