class << self
attr_accessor :n, :totalX, :totalY
end
क्लास इंस्टेंस चर को परिभाषित करने के लिए उपरोक्त वाक्यविन्यास का उपयोग किया जाता है। लेकिन जब मैं सोचता हूं कि वाक्यविन्यास का क्या अर्थ है, तो यह मुझे कोई समझ नहीं आता है, इसलिए मुझे आश्चर्य है कि इस प्रकार का वाक्यविन्यास किसी अन्य प्रकार की परिभाषाओं के लिए उपयोग किया जाता है। भ्रम की स्थिति यहाँ से मेरी बात यह है:रूबी में सिंटैक्स के कोई संबंधित अनुप्रयोग हैं: कक्षा << स्वयं ... अंत
class << self
संलग्न ऑपरेटर सामान्य रूप से "जोड़ने क्या बाईं तरफ वस्तु के अधिकार पर है" का मतलब है। लेकिन इस ब्लॉक के संदर्भ में, यह "इस ब्लॉक की सामग्री को उदाहरण के बजाए कक्षा के उदाहरण की परिभाषा में डाल" कैसे जोड़ता है?
इसी कारण मैं क्यों एक संदर्भ में वर्ग < < स्वयं वर्ग उदाहरण वैरिएबल निर्धारित कर सकते करने के लिए के रूप में, जबकि एक अन्य में यह इस तरह यहाँ के रूप में वर्ग चर बनाने का लगता है संदेह में हूँ के लिए:
class Point
# Instance methods go here
class << self
# Class methods go here
end
end
ठीक है के लिए यह देखने का एक अच्छा तरीका है - कक्षा वास्तव में एक शब्दकोश है। लेकिन वास्तव में आपने उत्तर दिया कि मैंने अपना आखिरी उदाहरण जोड़ा है, जहां एक और संदर्भ में एक ही sytax (पुस्तक के अनुसार मैं पढ़ रहा हूं) वर्ग उदाहरण विधियों के बजाय कक्षा विधियों का उत्पादन करता है। नीचे बिंदु पर पॉइंट क्लास उदाहरण क्लास विधि में क्यों होता है जबकि शीर्ष पर attr_accessor आपको क्लास-इंस्टेंस स्तर पर विशेषता देता है? –
वास्तव में आपके द्वारा दिए गए स्पष्टीकरण का उपयोग करके मैं अपनी पिछली टिप्पणी में प्रश्न का उत्तर दे सकता हूं - attr_accessor विधि क्लास क्लास की instance_variable_set और instance_variable_get विधियों को कॉल करती है। आम तौर पर उनको परिणाम चर बनाने के परिणामस्वरूप होंगे क्योंकि हम क्लास डिक्शनरी में जोड़ रहे हैं, जैसा कि आपने इसे रखा है, हम क्लास इंस्टेंस वेरिएबल्स बना रहे हैं। ठीक है, मुझे लगता है कि मुझे अब मिल गया है। धन्यवाद। –
-1 भ्रामक, वर्ग के बाद से << x ... अंत वास्तव में एक्स के मेटाक्लास को जानकारी जोड़ता है, एक्स की कक्षा नहीं। – rampion