如何解决包含一个带有或不带有发送功能的模块,有什么区别吗?
|SomeClass.include(SomeModule)
与
SomeClass.send :include,SomeModule
它们之间有什么区别吗?为什么选择第二种方式? (至少我在其他人的代码中更经常地找到它)。
解决方法
它们几乎是相同的。
不同之处在于如果
SomeClass#include
是私有的,则由于Object#send
的性质,后者仍然可以调用它
如果SomeClass#include
是私人的,而您选择了前者,它将产生一个错误。
因此,使用后者的优点是无论可见性如何,都可以包含一个模块。 (无论您是否真的认为访问私有方法是“正确的”事情,这是另外一回事了。它肯定会给您带来巨大的力量)。
,您可以重新打开现有的课程:
class SomeClass
include SomeModule
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。