我正在学习Ruby的对象模型。我已经写了这个脚本:
#/usr/bin/ruby
module MyModule
class MyBase
def class_b_method
puts "class_b_method called"
end
end
class MyClass < MyBase
attr_accessor :name
class_b_method
def set_name(name)
@name = "My name is #{name}"
end
def display_name
return @name
end
end
end
obj = MyModule::MyClass.new
obj.set_name "Martin"
puts obj.display_name
运行上面的代码,我得到这个错误:
module.rb:13: undefined local variable or method `class_b_method' for MyModule::MyClass:Class (NameError)
我试图在类中调用父方法MyClass
。我做错了什么?
在类内部MyClass
,自我是MyClass
。但是您class_b_method
在类内部定义了一个实例方法MyBase
,即该方法可以由该类的实例MyBase
调用,而不能由该类本身调用。因此self.class_b_method
会引发合法错误。要使您的代码可行,请编写以下方法:
class MyBase
def self.class_b_method
puts "class_b_method called"
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句