में आवृत्ति चर प्रारंभ करना क्या मिक्स्डिन के रूप में उपयोग किए जाने वाले मॉड्यूल में इंस्टेंस चर को प्रारंभ करने का कोई साफ तरीका है? - इस हल्का परेशान हैमिक्सिन
module Example
def on(...)
@handlers ||= {}
# do something with @handlers
end
def all(...)
@all_handlers ||= []
# do something with @all_handlers
end
def unhandled(...)
@unhandled ||= []
# do something with unhandled
end
def do_something(..)
@handlers ||= {}
@unhandled ||= []
@all_handlers ||= []
# potentially do something with any of the 3 above
end
end
सूचना मैं बार-बार जांच करने के लिए करता है, तो प्रत्येक @member
ठीक से प्रत्येक कार्य में शुरू कर दिया गया है: उदाहरण के लिए, मैं निम्नलिखित है। मैं बहुत अधिक लिखूंगा:
module Example
def initialize
@handlers = {}
@unhandled = []
@all_handlers = []
end
# or
@handlers = {}
@unhandled = []
# ...
end
और बार-बार यह सुनिश्चित करना नहीं है कि चीजें सही ढंग से शुरू हो जाएं। हालांकि, मैं यह कह सकता हूं कि यह संभव नहीं है। विधि Example
पर जोड़ने और विस्तारित कक्षा से initialize_me
पर कॉल करने के अलावा, इसके आसपास कोई रास्ता है? मैंने this example देखा, लेकिन ऐसा करने के लिए मैं बंदर-पैचिंग चीजें Class
में नहीं हूं।
उत्कृष्ट, धन्यवाद - मुझे आश्चर्य है कि मुझे इस दृष्टिकोण को कहीं भी क्यों नहीं देखा गया है, भले ही इसके बारे में लाखों लेख हैं। –
दुर्भाग्यवश यह काम नहीं प्रतीत होता है - 'example_ivar' का संदर्भ देने के बाद' nil' के रूप में वापस आता है। –
आह, मैं देखता हूं, धन्यवाद - लेकिन यदि कक्षा पहले से ही 'प्रारंभिक' विधि निर्दिष्ट करती है, तो इससे समस्याएं उत्पन्न हो जाएंगी, है ना? –