Ruby 中的 instance_eval、class_eval 与钩子方法使用指南
1. 理解 self 与 instance_eval、class_eval
在 Ruby 程序里,无论处于何处, self 始终有一个由代码位置决定的值。有时候,管理 self 与代码位置的关系并临时改变 self 的值是很有用的。 Module#instance_eval 、 Module#class_eval 和 Module#module_eval 这些方法能让你将 self 设置为任意对象,以该对象作为 self 来执行代码块,之后再恢复 self 的原始值。
例如:
"cat".instance_eval do
puts "Upper case = #{upcase}"
puts "Length is #{self.length}"
end
输出结果:
Upper case = CAT
Length is 3
在 instance_eval 代码块内部, self 变量会临时被赋予接收 instance_eval 消息的对象的值。
所有的
超级会员免费看
订阅专栏 解锁全文
56

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



