ruby中如何从内部类访问外部类的类变量
我在下面有一些 Ruby 代码:
class A
@@lock = Monitor.new
class B
def method
@@lock.synchronize
puts "xxxxx"
end
end
end
end
运行后它会抛出一个错误,如下所示:
未初始化的类变量 @@lock in A::B (NameError)
如果我想知道如何访问外部类A的类变量@@lock来自内部类B的方法,怎么办?先感谢您。
i have some code in Ruby here below:
class A
@@lock = Monitor.new
class B
def method
@@lock.synchronize
puts "xxxxx"
end
end
end
end
after running it throws an error which said that below:
uninitialized class variable @@lock in A::B (NameError)
if i want to know how to access the outer class A's class variable @@lock from inner class B's method, how to do it? thank you in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为如果不定义访问器就不能。
类
B
的词法作用域位于 A 内部,因此它的真实名称是 A::B 并且其他各种内容都不同。但它不是子类或任何其他类型的派生类,因此它实际上没有任何特殊权利来查看 A 的私有或受保护或其他本地元素。
I don't think you can without defining an accessor.
Class
B
is lexically scoped inside of A, so its real name is A::B and various other things are different.But it's not a child or any other sort of derived class, so it doesn't actually have any special rights to see private or protected or otherwise local elements of A.
访问此类变量的唯一方法是通过访问器方法
The only way to access this class variable is via an accessor method