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是一个解释器所以类(MyClass类)应该最后执行。
答案 0 :(得分:1)
这不是关于优先级,您在课堂上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
。