加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby包括问题

发布时间:2020-12-17 04:03:13 所属栏目:百科 来源:网络整理
导读:class Foo def initialize(a) puts "Hello #{a}" endendmodule Bar def initialize(b) puts "#{b} World" endendclass Sample Foo include Bar def initialize(c) super endendSample.new('qux') #= qux World 为什么输出不是’Hello qux’? credit for cod
class Foo
  def initialize(a)
    puts "Hello #{a}"
  end
end
module Bar
  def initialize(b)
    puts "#{b} World"
  end
end
class Sample < Foo
  include Bar
  def initialize(c)
    super
  end
end
Sample.new('qux') #=> qux World

为什么输出不是’Hello qux’? credit for code

解决方法

当您将一个模块包含到一个类中时,它就像您在类层次结构中插入一个新的超类一样,就在Sample和Foo之间.调用super()通过包含的模块进行搜索,然后再回到真正的超类(Foo).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读