在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