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 c开发者_StackOverflow中文版lass B's method, how to do it? thank you in advance.
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
class A
def self.lock
@@lock ||= Monitor.new
end
class B
def method
A.lock.synchronize
puts "xxxxx"
end
end
end
end
精彩评论