Ruby编程:对象模型与动态方法深度解析
1. Refinements的使用与注意事项
Refinements是Ruby中一个强大但需要谨慎使用的特性。有时候它可能会让你措手不及,比如在使用 using 后调用 another_method , my_method 的调用会在 using 之前发生,这就导致调用的是该方法原始、未经过改进的版本。
一些人会觉得这种结果违反直觉。所以在使用Refinements时,一定要仔细检查方法调用。同时要记住,Refinements仍在不断发展。在Ruby 2.0中,当程序首次使用Refinements时,会发出一个可怕的警告:
warning: Refinements are experimental, and the behavior may change in future versions of Ruby!
不过在Ruby 2.1中,这个警告已被移除,但仍有一些特殊情况,Refinements可能不会按预期工作,而且这些特殊情况在未来的Ruby版本中可能会改变。例如,可以在常规模块中调用 refine ,但不能在类中调用,即使类本身也是一种模块。此外,像 methods 和 ancestors 这样的元编程方法会完全忽略Refinements。虽然这些行为有合理的技术依据,但仍可能会让你犯错。Refinements有潜力消除危险的Monkeypatches,但Ruby社区需要一些
超级会员免费看
订阅专栏 解锁全文
6651

被折叠的 条评论
为什么被折叠?



