以下是目前的情况:
Core_Class是包含许多模块的关键类 Use_Class继承自Core_Class
在Core_Class包含的其中一个模块中,我希望它访问Core_Class中定义的方法。这很好用。让我们调用这个方法header()
我现在尝试在Use_class中重新定义此函数,以便use_class具有唯一的标头方法。
这看起来有点像这样:
module Print_header
def print_header_
Core_Class.header()
end
end
class Core_Class
include Print_header
def header()
puts "old header"
end
def run
print_header
end
end
class Use_Class < Core_Class
def header()
puts "New header"
end
def run
print_header
end
end
现在我的问题是旧代码被使用了。我觉得我缺少面向对象编程,继承和mixins的东西,但我不确定是什么。花大约2个小时谷歌搜索,无法找到帮助我理解的东西,而且我是办公室里唯一的Ruby(非常非常初级)的开发者。
如果可能的话,除了修复之外,你能否解释什么是错误的?
由于
答案 0 :(得分:0)
我认为,你想要实现这样的东西:
module PrintHeader
def print_header
puts header
end
end
class CoreClass
include PrintHeader
def header
'old header'
end
end
class UseClass < CoreClass
def header
'New header'
end
end
core = CoreClass.new
use = UseClass.new
core.header
# => 'old header'
core.print_header
# old header
# => nil
use.header
# => 'New header'
use.print_header
# New header
# => nil