在 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
我也想知道是否有更好的方法来做这件事。