Ruby 中 method_missing 和 const_missing 的灵活运用
1. Ruby 钩子概述
在 Ruby 应用程序的生命周期中,有一些关键的时刻可以通过 Ruby 钩子来执行特定代码。常见的钩子有以下几种:
- inherited 方法 :当某个类添加了子类时,该方法会被调用,可用于跟踪类的子类。
- module included 方法 :当某个模块被包含在类中时,此方法会被调用,可用于在类包含模块时对类进行修改。
- at_exit 钩子 :在 Ruby 解释器退出之前,该钩子会被触发,例如 Test::Unit 会使用它来自动运行测试。
这些只是常见的钩子,实际上还有很多其他的 Ruby 钩子,能让代码了解程序的运行状态。
2. 处理缺失方法
想象一个场景,公司决定将 Document 类作为处理文本文档的标准。但一些经验不足的工程师反馈 Document 类“不工作”或“完全损坏”,可能是因为他们调用了不存在的方法,比如:
# Error: the method is content, not text!
doc = Document.new('Titanic', 'Cameron', 'Sail, crash, sink')
puts "The text is #{doc.text}"
当 Ruby 尝试调用一个不存在的方法时,它会先在类及其父类中查找该方法。如果找不到
超级会员免费看
订阅专栏 解锁全文
2

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



