मुझे एक कक्षा की आवश्यकता है जिसमें अर्द्ध स्वचालित 'to_s' विधि है (वास्तव में एक्सएमएल उत्पन्न करने के लिए)।रूबी: attr_accessor जेनरेट किए गए तरीकों - उन्हें फिर से कैसे करें (to_s - कस्टम प्रारूप में)?
class MyClass
attr_accessor :id,:a,:b,:c
end
c=MyClass.new
अब तक मैं एक बुनियादी कर रहा हूँ:
c.methods - Object.methods
=> ["b", "b=", "c", "c=", "id=", "a", "a="]
मैं कुछ चुनौतियों का सामना करना पड़ रहा मैं सभी स्वचालित तरीकों मेरे 'attr_accessor' लाइन में स्थापित के माध्यम से पुनरावृति करना चाहते हैं:
- 'आईडी' थोड़ा सिरदर्द का कारण बन सकता है - क्योंकि ऑब्जेक्ट में पहले से ही 'आईडी' लगता है।
- ऊपर 'c.methods' कॉल, स्ट्रिंग लौटाता है - मुझे कोई अन्य मेटा-डेटा नहीं मिल रहा है? (जावा 'विधि' में एक वस्तु है, जहां मैं और प्रतिबिंब कर सकता हूं)।
- मेरे पास एक-से-कई संबंध हैं जिनसे मुझे निपटना है ('सी' अन्य ऑब्जेक्ट प्रकारों का एक सरणी प्रकार है)।
यही वह है जो मैं करने की कोशिश कर रहा हूं: मैं एक साधारण ऑब्जेक्ट डिज़ाइन करना चाहता हूं जिसमें 'to_s' है जो एक XML खंड बनायेगा: उदाहरण के लिए।
<id> 1 </id>
<a> Title </a>
<b> Stuff </b>
<c>
<x-from-other-object>
<x-from-other-object>
....
</c>
और फिर इतना आसान वस्तु से अपने डेटा वर्गों के वारिस: इतना है कि (उम्मीद) मैं एक mechansim एक पूरे एक्सएमएल दस्तावेज़ बनाने के लिए मिलता है।
मुझे यकीन है कि मैं यहां भी पहिया का पुन: आविष्कार कर रहा हूं ... इसलिए अन्य कोशिश-परीक्षण और परीक्षणों का स्वागत है।
दिलचस्प सामान पर आधारित है! धन्यवाद! – monojohnny
इसने निश्चित रूप से +1 की मदद की है - लेकिन यहां मुख्य मुद्दा यह है कि मैं वास्तव में attr_accessor- परिभाषित सामानों को वास्तव में चुनना चाहता हूं। – monojohnny
ने इसे इंगित करने के लिए विवरण को थोड़ा सा स्पष्ट किया है। – monojohnny