क्या कोई मुझे कक्षा चर और वर्ग आवृत्ति चर के बीच अंतर के बारे में बता सकता है?कक्षा चर और वर्ग आवृत्ति चर के बीच अंतर?
उत्तर
एक कक्षा परिवर्तनीय (@@
) कक्षा और उसके सभी वंशजों के बीच साझा किया जाता है। एक वर्ग आवृत्ति चर (@
) वर्ग के वंशज द्वारा साझा नहीं किया जाता है।
कक्षा चर (@@
)
चलो एक वर्ग चर @@i
के साथ एक वर्ग फू है, और पढ़ने के लिए accessors और @@i
लेखन:
class Foo
@@i = 1
def self.i
@@i
end
def self.i=(value)
@@i = value
end
end
और एक व्युत्पन्न वर्ग:
class Bar < Foo
end
हम देखते हैं फू और बार @@i
के लिए एक ही मूल्य है कि:
p Foo.i # => 1
p Bar.i # => 1
और बदलते एक में @@i
दोनों में यह परिवर्तन:
Bar.i = 2
p Foo.i # => 2
p Bar.i # => 2
कक्षा उदाहरण चर (@
)
चलो कक्षा के उदाहरण के साथ एक साधारण वर्ग बनाते हैं va riable @i
और पढ़ने के लिए accessors और @i
लेखन:
class Foo
@i = 1
def self.i
@i
end
def self.i=(value)
@i = value
end
end
और एक व्युत्पन्न वर्ग:
class Bar < Foo
end
हम देखते हैं कि हालाँकि बार @i
के लिए accessors इनहेरिट करती है, यह @i
ही वारिस नहीं करता है:
p Foo.i # => 1
p Bar.i # => nil
हम फू केको प्रभावित किए बिना बार के @i
सेट कर सकते हैं:
Bar.i = 2
p Foo.i # => 1
p Bar.i # => 2
सबसे पहले आप यह समझना चाहिए कि कक्षाओं उदाहरणों भी कर रहे हैं - Class
वर्ग के उदाहरण।
एक बार जब आप इसे समझ लेंगे, तो आप समझ सकते हैं कि एक कक्षा में नियमित रूप से (पढ़ा गया: गैर-वर्ग) ऑब्जेक्ट के रूप में इसके साथ जुड़े आवृत्ति चर हो सकते हैं।
Hello = Class.new
# setting an instance variable on the Hello class
Hello.instance_variable_set(:@var, "good morning!")
# getting an instance variable on the Hello class
Hello.instance_variable_get(:@var) #=> "good morning!"
ध्यान दें कि Hello
पर एक उदाहरण चर पूरी तरह से Hello
hello = Hello.new
# setting an instance variable on an instance of Hello
hello.instance_variable_set(:@var, :"bad evening!")
# getting an instance variable on an instance of Hello
hello.instance_variable_get(:@var) #=> "bad evening!")
# see that it's distinct from @var on Hello
Hello.instance_variable_get(:@var) #=> "good morning!"
एक वर्ग चर दूसरी ओर की एक उदाहरण पर से संबंधित नहीं है और एक उदाहरण चर से अलग है एक प्रकार है उपर्युक्त दो के संयोजन के रूप में, क्योंकि यह Hello
पर और इसके उदाहरणों के साथ-साथ Hello
के उप-वर्गों पर भी उपलब्ध है और उनके उदाहरण:
HelloChild = Class.new(Hello)
Hello.class_variable_set(:@@class_var, "strange day!")
hello = Hello.new
hello_child = HelloChild.new
Hello.class_variable_get(:@@class_var) #=> "strange day!"
HelloChild.class_variable_get(:@@class_var) #=> "strange day!"
hello.singleton_class.class_variable_get(:@@class_var) #=> "strange day!"
hello_child.singleton_class.class_variable_get(:@@class_Var) #=> "strange day!"
बहुत से लोग ऊपर अजीब व्यवहार की वजह से class variables
डालने के बजाय class instance variables
के उपयोग की सिफारिश करने के लिए कहते हैं।
- 1. किसी संपत्ति और आवृत्ति चर के बीच क्या अंतर है?
- 2. पायथन कक्षा और आवृत्ति चर के लिए कंपाउंड असाइनमेंट
- 3. सदस्य चर और स्थानीय चर के बीच क्या अंतर है?
- 4. % चर% और चर के बीच अंतर! बैच फ़ाइल में
- 5. रूबी के attr_accessor उदाहरण चर के बजाय कक्षा चर या वर्ग आवृत्ति चर का उत्पादन कैसे कर सकते हैं?
- 6. पूर्णता चर और सेमफोर के बीच अंतर
- 7. क्या आवृत्ति चर वैश्विक वैरिएबल चर हैं?
- 8. एमएसटीएस्ट, MyClassInitialize, और आवृत्ति चर
- 9. उद्देश्य-सी, सदस्य चर और वर्ग चर
- 10. जावा विरासत ओवरराइडिंग आवृत्ति चर
- 11. copyWithZone सेटिंग आवृत्ति चर?
- 12. PHP चर में सत्र चर और वैश्विक चर के बीच क्या अंतर है?
- 13. पायथन में स्थिर और आवृत्ति चर के बीच मतभेद। क्या वे भी मौजूद हैं?
- 14. रेल और वर्ग चर
- 15. दो SYSTEMTIME चर के बीच अंतर
- 16. सदस्य चर और सदस्य संपत्ति के बीच अंतर?
- 17. एक चर और गुण को संशोधित करने के बीच अंतर
- 18. आईओएस जब आवृत्ति चर या गेटर विधि
- 19. एक चर के लिए fzero और fsolve के बीच अंतर
- 20. एक आवृत्ति चर क्या है?
- 21. सी #, चर के साथ और चर
- 22. हस्ताक्षरित और हस्ताक्षरित चर के बीच क्या अंतर है?
- 23. आईओएस हेडर फ़ाइल में गुणों और चर के बीच अंतर?
- 24. परिवर्तनीय चर के बीच अंतर var $ a = $() और var a?
- 25. PHP- वैश्विक चर और स्थिरांक के बीच क्या अंतर है
- 26. सार्वजनिक स्थिर और निजी स्थैतिक चर के बीच अंतर
- 27. बैश में अनसेट और खाली चर के बीच अंतर
- 28. कैसे वर्ग चर अजगर
- 29. मेरे नियंत्रक के आवृत्ति चर दृश्यों (रेल)
- 30. हाइबरनेट वर्ग चर
कक्षा विधियों का उपयोग कर आवृत्ति चर वापस क्यों करें? क्या आप अक्सर इस स्थिति में भाग लेते हैं? – sekmo
@sekmo इन उदाहरणों में एक्सेसर्स या तो क्लास पदानुक्रम से संबंधित क्लास, या _class variables_ से संबंधित _class instance variables_ लौटाते हैं। वे सादे _instance variables_ वापस नहीं करते हैं जो कक्षा के उदाहरणों से संबंधित हैं। "इंस्टेंस वैरिएबल," "क्लास इंस्टेंस वैरिएबल," और "क्लास वैरिएबल" शब्द काफी उलझन में हैं, है ना? –