【发布时间】:2018-02-02 21:12:08
【问题描述】:
我一直在阅读一些教程来查找此信息,但没有看到任何直接解决此问题的内容。
我已经多次在模块上看到以下语法:
module MyModule
def run()
puts "running"
end
end
我也见过类似这样的语法:
module MyModule
def MyModule.run()
puts "running"
end
end
在方法之前包含模块名称有什么好处?反之亦然?
【问题讨论】:
-
你试过调用上面的代码吗?如果有的话应该很明显。
-
@engineersmnky 我有,但除了创建一个命名空间以使函数不会相互影响之外,我没有看到其他意义。
-
在第二个例子中你可以调用
MyModule.run。你能在第一个例子中做同样的事情吗? -
拳头将允许您将此方法混合到其他类中,例如
class A; include MyModule; end;将允许您致电A.new.run和class A; extend MyModule; end;将允许您致电A.run。在第二个示例中,run方法绑定到作为接收者的MyModule,并且必须调用为MyModule.run -
@Stefan 我在这里看到了ruby-doc.com/docs/ProgrammingRuby/html/tut_modules.html
标签: ruby