कहो, मेरे पास एक वर्ग मैं शामिल करें और फिर स्पष्ट रूप से सभी शामिल विधियों को निजी बनायें? आप ए और एक मॉड्यूल बी है। मैं B को A में शामिल करना चाहता / चाहूंगा / लेकिन चिह्न शामिल / विस्तारित तरीके निजी के रूप में (इसलिए वे A पर क्लिक करें, लेकिन ए के तरीकों के भीतर उपलब्ध होगा। B को A में कैसे शामिल कर सकता हूं लेकिन सभी को चिह्नित कर सकता हूँ निजी तरीके के रूप में शामिल विधियां?
वर्ग ए में शामिल हैं बी निजी * B.instance_methods बी वर्ग का विस्तार & lt; & lt; स्वयं निजी * B.instance_methods एंड एंड private_include को जोड़ने के लिए बंदर पैच मॉड्यूल और private_extend कर सकते हैं :
वर्ग मॉड्यूल def private_include * मॉड्यूल class_eval self.send करें (: शामिल करें, * मॉड्यूल) modules.each do | mod | Self.send (: निजी, * mod.instance_methods) अंत अंत अंत def private_extend * मॉड्यूल सिंगलटन = वर्ग & lt; & lt; स्वयं; स्वयं अंत singleton.instance_eval self.send करें (: शामिल करें, * मॉड्यूल) modules.each do | mod | Self.send (: निजी, * mod.instance_methods) अंत अंत एंड एंड
No comments:
Post a Comment