![]() |
1
39
尝试:
例如:
更新 要在运行时将模块混合到对象实例中,您需要检索实例的特征类。在Ruby中没有明确的方法可以做到这一点,但是一个相当常见的习惯用法是:
如果你发现自己经常使用它,你可以使它普遍可用:
解决方法是:
|
![]() |
2
39
这可能是个更好的主意:
|
![]() |
3
22
如果你在找整个名单, Swanand's answer 是你最好的选择。
另一方面,如果要检查类是否包含
特定的
模块
|
![]() |
4
19
如果您想检查模块是否包括:
|
![]() |
5
6
下面是另一种有效的方法来查看模块是否 包括 或 扩展的 通过一个班级。
正如其他人提到的,您可以通过检查
所以如果你有一个名为
如果你想确定你的班级是否
扩展的
这个
为什么会这样?引用这本书 Eloquent Ruby, by Russ Olsen :
这也意味着确定模块是否
包括
进入你的课堂就是做这样的事情(尽管我还是喜欢
|
![]() |
6
3
只有类可以描述方法,当您向实例添加方法时,实际上是将它添加到对象元类中。您要查找的模块将在这个元类祖先列表中。
|
![]() |
7
2
我喜欢@alexparamonov的解决方案,但我四处游玩,发现这也很有效:
http://www.ruby-doc.org/core-2.1.2/Module.html#method-i-include-3F |