fre*_*ght 7 ruby language-design
我们可以像这样在顶层调用Array方法
Array(something)
Run Code Online (Sandbox Code Playgroud)
这对我来说很有意义,它是一个没有显式接收器的方法调用,而self,在这种情况下是主要的,插入在方法调用的前面.但这不等于:
Kernel.Array(something)
Run Code Online (Sandbox Code Playgroud)
这对我没有意义.由于在第一种情况下,对象main是Object类,它将Kernel模块混入,因此具有Array方法.但在第二种情况下,我们在内核模块对象本身上调用Array方法,而不是主对象,它们不是不一样吗?
对不起,我的英语不好.
Kernel.Array 就是所谓的模块函数。模块函数的其他示例包括 Math.sin 和 Math.hypot 等。
模块函数是一种方法,它既是模块上的类方法,也是私有实例方法。当您在顶层调用 Array() 时,您将其作为主对象的私有实例方法进行调用。当您通过 Kernel.Array() 调用它时,您将其作为 Kernel 上的类方法进行调用。它们是相同的方法。
要了解更多信息,请阅读 rubydocs 中的 module_function 方法:http://www.ruby-doc.org/core/classes/Module.html#M001642
归档时间: |
|
查看次数: |
940 次 |
最近记录: |