मैं मूल वर्ग की कक्षा विधि के माध्यम से गतिशील रूप से बाल वर्ग की उदाहरण विधि बनाना चाहता हूं।रूबी गतिशील रूप से उदाहरण विधि को कैसे परिभाषित करें?
class Foo
def self.add_fizz_method &body
# ??? (This is line 3)
end
end
class Bar < Foo
end
Bar.new.fizz #=> nil
class Bar
add_fizz_method do
p "i like turtles"
end
end
Bar.new.fizz #=> "i like turtles"
लाइन # 3 पर क्या लिखना है?
लगभग मैं क्या जरूरत है। समस्या यह है - और ब्लॉक का स्वयं बार का उदाहरण होना चाहिए। तो ऐसा कुछ लिखना संभव होगा: कक्षा बार; add_fizz_method करें; पी self.bar_name; समाप्त ; अंत –
'p' के नीचे 'p self.class'' को आज़माएं, मुझे कछुए पसंद हैं। 'स्वयं' पहले से ही 'बार' का एक उदाहरण है। –
बीटीडब्ल्यू: यदि आप 'add_fizz_method' कहने से पहले' NoMethodError' फेंकने के बजाय 'nil' वापस करना चाहते हैं, तो आप 'Foo' क्लास में खाली' Fizz' विधि घोषित कर सकते हैं। –