【问题标题】:Calling parent module methods from a nested class从嵌套类调用父模块方法
【发布时间】:2009-08-07 06:48:55
【问题描述】:

我无法弄清楚如何从类中的父模块调用方法。

我想从嵌套类中的父模块调用模块函数,但似乎找不到方法。

示例:

module Awesome
  class Checker
    def awesome?
      awesome_detection
    end
  end

  module_function
  def awesome_detection
    true
  end

end

如果我打电话给Awesome::Checker.new.awesome?,它不知道awesome_detection

关于我缺少什么的任何想法?

【问题讨论】:

  • 刚刚记起来——我意识到我可以在检查器中使用include Awesome,但如果我在Awesome 中有多个类,我想知道另一种方式。

标签: ruby


【解决方案1】:
#!/usr/bin/env ruby -wKU

module Awesome

  class Checker
    def awesome?
      Awesome.awesome_detection
    end
  end

  def self.awesome_detection
    puts "yes"
  end

end

Awesome::Checker.new.awesome?
# => yes

【讨论】:

  • 原问题中的module_function 更好。修复def awesome? 调用Awesome.awesome_detection 就足够了。
  • 好像是多余的,在module Awesome里面调用Awesome.awsome...不是吗?
猜你喜欢
  • 1970-01-01
  • 2015-09-15
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多