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