繁体   English   中英

Ruby:模块内部的类优先于模块?

[英]Ruby: class inside module take place priority over module?

module TestModule
  NAME = "Ruby"
  def self.class_method
    puts "this is modules method"
  end
  def instances_method
    puts "this is instances methods"
  end
  class MyClass
    puts "this is class inside module"
  end
end

puts TestModule::NAME
puts TestModule.class_method
puts TestModule::MyClass

Output:
this is class inside module
Ruby
this is modules method

应该是:Ruby这是模块方法这是模块内的类

在类和模块之间,ruby是否有任何优先级。 由于ruby是解释器,因此应最后执行类(类MyClass)。

这与优先级无关,您在类中的puts调用在任何方法之外。 解释器首先读取整个文件,这就是为什么在任何这些调用之前将其输出this is class inside module

puts TestModule::NAME
puts TestModule.class_method
puts TestModule::MyClass

您可以对此进行测试:

module TestModule
  puts 'reading module'

  class MyClass
    puts 'reading class'
  end
end

您会看到:

reading module
reading class

puts TestModule::MyClass此调用不会像您期望的那样将内容放入您的类中。 因此,只需将您的类放入实例或类方法中,然后分别将其称为TestModule::MyClass.new.instance_methodTestModule::MyClass.class_method

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM