从 Ruby 中包含的模块调用重新定义的 class 函数

Calling a class-function that gets redefined, from an included Module in Ruby

这是目前的情况:

Core_Class是keyclass里面包含了很多模块 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

现在我的问题是旧代码被使用了。我觉得我遗漏了一些关于面向对象编程、继承和混合的东西,但我不确定是什么。花了大约 2 个小时在谷歌上搜索,找不到可以帮助我理解的东西,而且我是办公室里唯一的 Ruby(非常初级)开发人员。

如果可能的话,除了修复之外,您能否解释一下出了什么问题?

谢谢

我想,你想实现这样的东西:

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