SomeClass.include(SomeModule)
VS
SomeClass.send :include, SomeModule
他们之间有什么不同吗?为什么第二种方式更受青睐? (至少我在其他人的代码中更频繁地发现它。)
答案 0 :(得分:5)
他们差不多相同。
不同之处在于,如果SomeClass#include
是私有的,由于Object#send
如果SomeClass#include
是私有的,而你选择前者,则会引发错误。
因此,使用后者的优势在于,无论可见性如何,您都可以包含模块。 (你是否真的相信访问私有方法是“正确”的事情是另一个故事。它肯定会给你巨大的力量。)
答案 1 :(得分:0)
您可以重新打开现有课程:
class SomeClass
include SomeModule
end