यह प्रश्न सीधे this one से संबंधित है। लेकिन मैंने इसे मूल समस्या में तोड़ने की कोशिश की और मैं अन्य प्रश्न बॉक्स में और भी टेक्स्ट दर्ज नहीं करना चाहता था। तो यहां जाता है:classmethods को कैसे प्रीपेड करें
मुझे पता है कि मैं कक्षा मॉड्यूल को विस्तारित करके कक्षाओं को शामिल कर सकता हूं और मॉड्यूल # के माध्यम से इसे शामिल कर सकता हूं। लेकिन क्या मैं प्रीपेन्ड के साथ ऐसा ही कर सकता हूं?
वर्ग फू:
class Foo
def self.bar
'Base Bar!'
end
end
वर्ग एक्सटेंशन:
module Extensions
module ClassMethods
def bar
'Extended Bar!'
end
end
def self.prepended(base)
base.extend(ClassMethods)
end
end
# prepend the extension
Foo.send(:prepend, Extensions)
वर्ग FooE:
require './Foo'
class FooE < Foo
end
और एक साधारण startscript:
require 'pry'
require './FooE'
require './Extensions'
puts FooE.bar
यहाँ मेरी उदाहरण है
जब मैं स्क्रिप्ट शुरू करता हूं तो मुझे Extended Bar!
नहीं मिलता है जैसा कि मैं अपेक्षा करता हूं लेकिन Base Bar!
। ठीक से काम करने के लिए मुझे क्या बदलने की ज़रूरत है?
बहुत अच्छा! बहुत बहुत धन्यवाद। जाहिर है, मुझे नहीं पता था कि क्या विस्तार करता है। – Nessuno
ग्रेट, धन्यवाद ... – Fabio