为什么我一直收到一个NameError,说我Cherry
时Cherry.new
是未初始化的常量?我还没有精通创建子类。
class Red
def initialize(options = {})
@options = options
end
def instance_method_a
return @options[:a] if @options.has_key?(:a)
if @options.has_key?(:b)
#mathy code
end
end
def instance_method_b
return @options[:b] if @options.has_key?(:b)
if @options.has_key?(:a)
#mathy code
end
end
class Cherry < Red
def initialize(var)
self.new(:a => var)
end
end
class Vermillion < Red
def initialize(var)
self.new(:b => var)
end
end
end
我确信Vermillion
将会像未初始化一样。我需要能够为这些子类分配变量以通过实例方法运行它们。我怎样才能让它们起作用?
答案 0 :(得分:2)
您需要使用参数调用super
来调用基类的initialize
方法。
class Cherry < Red
def initialize(var)
super(:a => var)
end
end
此外,您的子类在主类中被命名空间。您需要使用命名空间调用它们。
Red::Cherry.new(something: "here")
答案 1 :(得分:0)
为什么我一直
NameError
说Subclass_A
是未初始化的常量?
简单:代码中没有Subclass_A
。