2012-06-21 33 views
5

मैं एक रेल स्रोत कोड के माध्यम से ब्राउज़ कर रहा हूँ के रूप में, यह पंक्ति है?रुबी में @@ मतलब क्या है?</p> <pre><code>@@autoloads = {} </code></pre> <p>क्या <code>@@</code> रूबी में मतलब है:

+0

बस जोड़ना चाहते हैं, सामान्य सर्वसम्मति वर्ग चर के ऊपर वर्ग वर्ग आवृत्ति चर है। http://thinkrelevance.com/blog/articles/2006/11/16/use-class-instance-variables-not-class-variables – Dty

+1

सिंकहाउंड इस तरह की चीजों की खोज के लिए उपयोगी है। –

उत्तर

2

इसका मतलब क्लास प्रॉपर्टी (कक्षा में नामित एक संपत्ति) तक पहुंचने का मतलब है, उदाहरण नहीं (एक संपत्ति जो उस कक्षा से प्रत्येक तत्काल वस्तु के लिए मौजूद है)।

आपके उदाहरण में, @@autoloads आपके प्रोग्राम की लंबाई के लिए जारी रहेगा।

class TestObj 
    @@prop = 0 
    def get_prop 
     @@prop 
    end 

    def increment_prop 
    @@prop += 1 
    end 
end 

a = TestObj.new 
b = TestObj.new 

a.increment_prop 

puts b.get_prop # 1 

CodePad

+0

धन्यवाद - मुझे समझ में आया कि @ वेरिएबल्स थे लेकिन रूबी के लिए अभी भी काफी नया है। – sdasdadas

+0

ध्यान देने योग्य एक बात यह है कि अभिभावक वर्ग में कक्षा चर * बाल वर्ग द्वारा विरासत में नहीं * हैं। मुझे बहुत सारे नए रूबीस्ट्स पता हैं जो उसमें थोड़ा सा थे। – x1a4

+0

कक्षा चर विरासत में हैं ('@@ ...'), लेकिन वर्ग * आवृत्ति * चर ('@ ...') पदानुक्रम के बावजूद प्रत्येक वर्ग के लिए अद्वितीय हैं। आपको कक्षा चर पर "अनियमित" चेतावनियां भी मिलेंगी जो आवृत्ति चर के साथ कभी नहीं होतीं। – tadman

1

@@ एक वर्ग चर को पहचानती है।

+0

धन्यवाद, Google ने इस उत्तर को थोड़ा मुश्किल बना दिया। – sdasdadas

1

@@ कुछ भी नहीं है बल्कि क्लास वैरिएबल को इंगित करता है।

एक कक्षा चर एक चर है जो एक वर्ग के सभी उदाहरणों के बीच साझा किया जाता है। इसका अर्थ यह है कि इस वर्ग से तत्काल सभी ऑब्जेक्ट्स के लिए केवल एक चर वैल्यू मौजूद है।

कक्षा चर के बारे में सोचने का एक और तरीका एक वर्ग के संदर्भ में वैश्विक चर के रूप में है।

संबंधित मुद्दे