2011-01-14 10 views
5

में भीतरी वर्ग से बाहरी वर्ग के एक वर्ग चर तक पहुंचने का तरीका मैं यहाँ नीचे रूबी में कुछ कोड है:माणिक

अप्रारंभीकृत: इसे चलाने के बाद

class A 
    @@lock = Monitor.new 
    class B 
    def method 
     @@lock.synchronize 
     puts "xxxxx" 
     end 
    end 
    end 
end  

एक त्रुटि जिसमें कहा गया नीचे कि फेंकता क्लास वेरिएबल @@ लॉक इन ए :: बी (नेमइरर)

अगर मैं जानना चाहता हूं कि बाहरी कक्षा ए के क्लास वेरिएबल @@ लॉक को आंतरिक कक्षा बी की विधि से कैसे पहुंचाया जाए, तो यह कैसे करें? पहले ही, आपका बहुत धन्यवाद।

उत्तर

1

इस वर्ग चर का उपयोग करने के लिए एक ही रास्ता मैं एक्सेसर को परिभाषित करने के बिना नहीं लगता कि आप कर सकते हैं एक्सेसर विधि

class A 
    def self.lock 
    @@lock ||= Monitor.new 
    end 

    class B 
    def method 
     A.lock.synchronize 
     puts "xxxxx" 
     end 
    end 
    end 
end 
+0

यू बहुत बहुत धन्यवाद नहीं कर रहा है! मैं कोशिश कर रहा हूँ जैसा आपने कहा था। – ywenbo

6

के माध्यम से है।

कक्षा B ए के अंदर स्पष्ट रूप से स्कॉप्ड किया गया है, इसलिए इसका असली नाम ए :: बी है और कई अन्य चीजें अलग हैं।

लेकिन यह एक बच्चे या व्युत्पन्न वर्ग के किसी भी अन्य प्रकार, तो यह वास्तव में ए के निजी या संरक्षित या अन्यथा स्थानीय तत्वों को देखने के लिए किसी विशेष अधिकार नहीं हैं

+0

आपकी विस्तृत व्याख्या के लिए धन्यवाद – ywenbo