我有一个模块Shish(就像一个抽象类)和一个访问者类Only_Onions。
我想在模块Shish中实例化Only_Onions,这样所有扩展Shish的类都可以使用该对象来判断它们是否只有_onions。
module Shish
only_onions_class = Only_Onions.new
end
class Only_Onions
def for_skewer
return true
end
end
class Skewer
include Shish
def only_onions
return only_onions_class.for_skewer
end
def veg?
return true
end
end
但是我得到一个错误“未初始化的常量Shish :: Only_Onions(NameError)。这是什么意思?
答案 0 :(得分:7)
声明的顺序有效。 Shish不知道代码中的Only_Onions。如果将其更改为this,则在定义模块Shish:
时已经声明了Only_Onionsclass Only_Onions
def for_skewer
return true
end
end
module Shish
only_onions_class = Only_Onions.new
end
class Skewer
include Shish
def only_onions
return only_onions_class.for_skewer
end
def veg?
return true
end
end
答案 1 :(得分:1)
试
::Only_Onions