新手问题 如何避免类在 mixin 多个模块时,出现同名方法被覆盖的情况

aspirewit · 2015年10月21日 · 最后由 chenge 回复于 2015年10月21日 · 1580 次阅读

如何避免类在 mixin 多个模块时,出现同名方法被覆盖的情况?如果确实要用到这些含有同名方法的相关模块,如何规避可能出现的错误情况?先谢谢各位的解答。

通过测试确保软件的行为符合预期,mixin 的时候是很难预知方法被覆盖的,发现后自然就是想办法避免方法名的 override 了。

#1 楼 @lgn21st 哦,我现在能想到的方法是通过 include 顺序控制具体从哪个模块导入同名方法,还有其他途径么

想要预知, 只能通过测试, 当然也有测试识别不出来的情况~

想避免错误的话, 可以再套一层 module 做 namespace, 或者在 included 的类里面写个 wrapper

define_method?也许可以用。可能需要一个模块的方法列表,然后判断。 《元编程》书里有个 rake 打开类的例子,可以参考下。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号