को संदर्भित करता है क्या रूबी में एक विधि है जो कक्षा के वर्तमान उदाहरण को संदर्भित करती है, जिस तरह से self
कक्षा को संदर्भित करता है?रूबी विधि जैसे 'स्वयं' जो उदाहरण
उत्तर
self
हमेशा एक उदाहरण को संदर्भित करता है, लेकिन एक वर्ग स्वयं Class
का उदाहरण है। कुछ संदर्भों में self
इस तरह के एक उदाहरण का उल्लेख करेंगे।
class Hello
# We are inside the body of the class, so `self`
# refers to the current instance of `Class`
p self
def foo
# We are inside an instance method, so `self`
# refers to the current instance of `Hello`
return self
end
# This defines a class method, since `self` refers to `Hello`
def self.bar
return self
end
end
h = Hello.new
p h.foo
p Hello.bar
आउटपुट:
Hello
#<Hello:0x7ffa68338190>
Hello
इस पर लेने के लिए खेद है, लेकिन उस पहले 'पी स्वयं' वास्तव में कक्षा परिभाषा को पार्स किए जाने पर निष्पादित करता है। 'H = Hello.new' वास्तव में वही मान वापस 'h.foo' के रूप में वापस कर देगा। मैं इस बात का जिक्र करता हूं कि सूचीबद्ध आउटपुट कुछ नए रूबीस्ट को गुमराह कर सकता है। – lilole
एक वर्ग self
का एक उदाहरण विधि के भीतर है कि उदाहरण के लिए संदर्भित करता है। एक उदाहरण के भीतर कक्षा प्राप्त करने के लिए आप self.class
पर कॉल कर सकते हैं। यदि आप कक्षा विधि के भीतर self
पर कॉल करते हैं, तो आपको कक्षा मिलती है। कक्षा विधि के अंदर आप कक्षा के किसी भी उदाहरण तक नहीं पहुंच सकते हैं।
self
संदर्भ हमेशा उपलब्ध है, और जिस वस्तु को इंगित करता है वह संदर्भ पर निर्भर करता है।
class Example
self # refers to the Example class object
def instance_method
self # refers to the receiver of the :instance_method message
end
end
क्लास विधियों को न भूलें – ahnbizcad
विधि self
उस ऑब्जेक्ट को संदर्भित करता है जो यह संबंधित है। कक्षा परिभाषाएं वस्तुएं भी हैं।
आप self
अंदर वर्ग परिभाषा यह वर्ग परिभाषा (वर्ग के लिए) की वस्तु को संदर्भित करता है का उपयोग करते हैं, यदि आप इसे वर्ग विधि के अंदर फोन इसे फिर से वर्ग को दर्शाता है।
लेकिन उदाहरण विधि में यह उस वस्तु को संदर्भित करता है जो कक्षा का एक उदाहरण है।
1.9.3p194 :145 > class A
1.9.3p194 :146?> puts "%s %s %s"%[self.__id__, self, self.class] #1
1.9.3p194 :147?> def my_instance_method
1.9.3p194 :148?> puts "%s %s %s"%[self.__id__, self, self.class] #2
1.9.3p194 :149?> end
1.9.3p194 :150?> def self.my_class_method
1.9.3p194 :151?> puts "%s %s %s"%[self.__id__, self, self.class] #3
1.9.3p194 :152?> end
1.9.3p194 :153?> end
85789490 A Class
=> nil
1.9.3p194 :154 > A.my_class_method #4
85789490 A Class
=> nil
1.9.3p194 :155 > a=A.new
=> #<A:0xacb348c>
1.9.3p194 :156 > a.my_instance_method #5
90544710 #<A:0xacb348c> A
=> nil
1.9.3p194 :157 >
आप कक्षा 1 घोषणा के दौरान निष्पादित # 1 देखते हैं। यह दिखाता है कि class A
आईडी == 85789490 के साथ प्रकार वर्ग का एक वस्तु है। तो वर्ग घोषणा के भीतर स्वयं वर्ग को संदर्भित करता है।
तब कक्षा विधियों को लागू किया जाता है (# 4) self
कक्षा विधि (# 2) के अंदर फिर से उस वर्ग को संदर्भित करता है।
और जब एक इंस्टेंस विधि लागू की जाती है (# 5) यह दिखाती है कि इसके अंदर (# 3) self
क्लास इंस्टेंस के ऑब्जेक्ट को संदर्भित करता है जिस पर विधि संलग्न है।
आप एक उदाहरण विधि के अंदर वर्ग उल्लेख करने के लिए उपयोग करने की जरूरत है self.class
हो सकता है आप की जरूरत: ही विधि?
1.itself => 1
'1'.itself => '1'
nil.itself => nil
इस सहायता की आशा करें!
- 1. रूबी: रूबी में स्वयं
- 2. example_eval विधि जैसे ब्लॉक में स्वयं को कैसे बदलें?
- 3. रूबी कक्षाएं: स्वयं बनाम @ variable
- 4. रूबी इंस्टेंस विधि से स्वयं का एक नया उदाहरण कैसे वापस करें
- 5. रूबी विधि जो खुद को लौटती है
- 6. रूबी मॉड्यूल और विस्तार स्वयं
- 7. रेंडरकंट्रोल विधि स्वयं-बंद टैग
- 8. कक्षा विधि जहां स्वयं ब्लॉक
- 9. copy.deepcopy स्वयं परिभाषित __new __() विधि
- 10. रूबी गतिशील रूप से उदाहरण विधि को कैसे परिभाषित करें?
- 11. स्वयं का उपयोग करना * * विधि
- 12. सार विधि जो व्युत्पन्न कक्षा का एक उदाहरण देता है
- 13. रूबी विधि-कॉलिंग पदानुक्रम
- 14. रूबी के .send() विधि
- 15. स्वयं हस्ताक्षरित प्रमाणपत्र के साथ उदाहरण, https
- 16. clojure.core.cache बस अपने स्वयं के उदाहरण
- 17. एक उदाहरण विधि
- 18. अक्षम उदाहरण विधि चेतावनी
- 19. Symbol.WPAN.Bluetooth उदाहरण जो डेटा
- 20. रूबी मॉड्यूल विधि पहुंच
- 21. एक उदाहरण विधि
- 22. कॉल उदाहरण विधि
- 23. दायरे में उदाहरण विधि
- 24. फैक्टरी विधि सिंगलटन उदाहरण
- 25. वर्ग विधि में स्वयं का उपयोग
- 26. एनोटेशन जो एक विधि
- 27. क्या सी # कक्षा स्वयं के उदाहरण उत्पन्न कर सकती है?
- 28. एक वस्तु जो रूबी
- 29. विधि जो पाइथन
- 30. रूबी क्लास विधियां थ्रेड-सुरक्षित हैं? जैसे
'स्वयं' * करता है * उदाहरण का संदर्भ लें। क्या आपके पास ठोस उदाहरण है? –