可以从嵌套在该模块中的类调用模块类方法吗?

时间:2016-06-15 20:47:01

标签: ruby-on-rails ruby oop

是否可以从嵌套类方法中调用模块的类方法?例如,如果我有:

module A
  def self.foo
    'hello'
  end
end

module A
  class B
    def self.bar
      foo # Fails since A is not in B's ancestor chain
    end
  end
end

我知道我可以使用

直接在foo上致电A
def self.bar
  A.foo
end

但理想情况下,如果可能的话,我想让A成为B祖先链的一部分。任何提示将不胜感激。

2 个答案:

答案 0 :(得分:3)

我不知道一种直截了当的方式来完全按照你的要求去做。但是,您可以将xgboost.core.XGBoostError: value 0for Parameter num_class should be greater equal to 1的自我方法移动到另一个模块中的实例方法,并A扩展该模块:

B

答案 1 :(得分:1)

使用def self.bar self.to_s.deconstantize.constantize.foo end (如果你使用Rails,你已经拥有它),你可以这样做:

i = 0.01
while i < 10:
   # do something
   print i
   if i < 0.1:
       i += 0.01
   elif i < 1.0:
       i += 0.1
   else:
       i += 1

关于inflectors的更多信息:

MediaWiki coding standard