gpt4 book ai didi

Ruby - 数组方法混淆

转载 作者:数据小太阳 更新时间:2023-10-29 07:00:44 25 4
gpt4 key购买 nike

我们可以像这样在顶层调用Array方法

Array(something)

这对我来说很有意义,它是一个没有显式接收者的方法调用,并且在本例中是 main 的 self 被插入到方法调用的前面。但这不是等同于:

Kernel.Array(something)

这对我来说没有意义。由于在第一种情况下,对象 main 属于 Object 类,其中混入了 Kernel 模块,因此具有 Array 方法。但是在第二种情况下,我们在内核模块对象本身而不是主对象上调用 Array 方法,它们不是一回事吗?

抱歉我的英语不好。

最佳答案

Kernel.Array 是所谓的模块函数。模块函数的其他示例包括Math.sin、Math.hypot等。

模块函数是一种既是模块上的类方法又是私有(private)实例方法的方法。当您在顶层调用 Array() 时,您将其作为主对象的私有(private)实例方法进行调用。当您通过 Kernel.Array() 调用它时,您将它作为内核上的类方法进行调用。它们是相同的方法。

要了解更多信息,请阅读 ruby​​docs 中的 module_function 方法:http://www.ruby-doc.org/core/classes/Module.html#M001642

关于Ruby - 数组方法混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1855153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com