Ruby では、初期化中に指定された値に基づいて、次のモジュールのいずれかから継承されるクラスを作成しようとしています。これらのモジュールの両方が継承し、それを継承するモジュールで定義された定数を使用する共通のメソッドを含む基本モジュールを作成したいと思います。例:
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」が呼び出されると、次のエラーが発生することです。
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
また、これを行うためのより良い方法があるかどうかも疑問に思っています。