Thursday 15 September 2011

ruby - Can I include/extend a module but mark all included/extended methods as private? -


कहो, मेरे पास एक वर्ग और एक मॉड्यूल बी है। मैं 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