रूबी में, मैं कक्षा बनाने की कोशिश कर रहा हूं, जो प्रारंभिकरण के दौरान दिए गए मान पर आधारित निम्न मॉड्यूल में से एक का उत्तराधिकारी होगा। मैं एक आधार मॉड्यूल बनाना चाहता हूं कि इन दोनों मॉड्यूलों में से प्रत्येक के पास सामान्य विधियां हैं जो कि प्राप्त करने वाले मॉड्यूल में परिभाषित स्थिरांक का उपयोग करती हैं। उदाहरण:रूबी मॉड्यूल
NameError: uninitialized constant BaseMod::OUTPUT
const_missing at org/jruby/RubyModule.java:2642
what_am_i at test_logic2.rb:3
(root) at test_logic2.rb:28
मैं भी वहाँ ऐसा करने के बारे में जाने के लिए एक बेहतर तरीका है सोच रहा हूँ:
module BaseMod
def what_am_i
puts OUTPUT
end
end
module Tall
OUTPUT = "I am tall"
include BaseMod
end
module Short
OUTPUT = "I am short"
include BaseMod
end
class Person
def initialize type
if type =~ /short/i
extend Short
else
extend Tall
end
end
end
p = Person.new "short"
p.what_am_i
मेरे मुद्दा यह है कि जब "p.what_am_i" कहा जाता है मैं निम्नलिखित त्रुटि मिलती है।
module Tall
::OUTPUT = "I am tall"
include BaseMod
end
हालांकि लगता है कि आप मॉड्यूल कम की घोषणा के साथ लगातार को पुनर्परिभाषित कर रहे हैं:
कि ऐसा करने का दिलचस्प तरीका:
यहाँ एक और प्रयास है। –
@ BorisStitnicky जो आप बनाना चाहते हैं उसके आधार पर, एक विधि एक आवृत्ति चर से अधिक समझदार हो सकती है। वाईएमएमवी :) – Trevoke