में विरासत में गतिशील रूप से परिवर्तन कैसे करें मैं रूबी में कक्षा के लिए मूल रूप से मूल कक्षा निर्दिष्ट करना चाहता हूं। इस कोड पर विचार करें:रुबी
class Agent
def self.hook_up(calling_class, desired_parent_class)
# Do some magic here
end
end
class Parent
def bar
puts "bar"
end
end
class Child
def foo
puts "foo"
end
Agent.hook_up(self, Parent)
end
Child.new.bar
न तो Parent
है और न ही Child
वर्ग परिभाषा एक माता पिता के वर्ग निर्दिष्ट करता है, तो वे दोनों वस्तु से विरासत। मेरा पहला सवाल यह है कि Child
के सुपरक्लास बनाने के लिए Agent.hook_up
में मुझे क्या करना होगा (उदाहरण के लिए Child
ऑब्जेक्ट्स 'बार' विधि का उत्तराधिकारी हो सकता है)।
मेरी दूसरी सवाल यह है: मैं की जरूरत है करतेAgent.hook_up
को पहला तर्क पारित करने के लिए, या वहाँ hook_up
विधि प्रोग्राम के रूप में वर्ग जिसमें से यह कहा जाता था निर्धारित कर सकते हैं किसी तरह है?
उम, यदि आप गतिशील रूप से कक्षा के अभिभावक को बदल रहे हैं या बदल रहे हैं तो यह एक उचित दावा है कि आपका ऑब्जेक्ट मॉडल सत्य * एक * रिश्ते को प्रतिबिंबित नहीं करता है। एक अधिक उपयुक्त समाधान शायद संरचना है। – cletus
आपको यह स्पष्ट करना चाहिए कि यह एक विचार अभ्यास है, या आप अभ्यास में इसका उपयोग क्यों करना चाहते हैं। गतिशील प्रतिबिंबित भाषाओं का मतलब यह नहीं है कि यह गतिशील रूप से विरासत को बदलने के लिए साफ है। महान (अभिव्यक्तिपूर्ण) शक्ति के साथ, बड़ी ज़िम्मेदारी आता है :) –
@cletus मैं सामान्य रूप से विरासत का बड़ा प्रशंसक नहीं हूं लेकिन समस्या के लिए मैं वर्तमान में देख रहा हूं, विरासत और एक रिश्ता रिश्ते का पूरी तरह से वर्णन करता है। एकमात्र समस्या यह है कि एक वस्तु को पता नहीं चलेगा कि रन टाइम तक यह 'क्या है'। –