[英]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_method
或TestModule::MyClass.class_method
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.