在Ruby中,我试图创建一个类,它基于初始化期间给定的值将从下列模块之一继承。我想创建一个基本模块,这两个模块都继承自那些包含常用方法的常用方法,这些方法使用继承它的模块中定义的常量。例如:在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
我也想知道如果有一个更好的方式去这样做。
这样做的有趣的方式。 – 2012-07-18 03:26:56
@BorisStitnicky根据你想要构建的方法,一个方法可能比实例变量更有意义。 YMMV :) – Trevoke 2012-07-18 13:35:30