实例评估
该 instance_eval
方法适用于所有对象。它在接收器的上下文中评估代码:
object = Object.new
object.instance_eval do
@variable = :value
end
object.instance_variable_get :@variable # => :value
instance_eval
在代码块的持续时间内将 self
设置为 object
:
object.instance_eval { self == object } # => true
接收器也作为唯一参数传递给块:
object.instance_eval { |argument| argument == object } # => true
该 instance_exec
方法的不同在此方面:它通过它的参数块来代替。
object.instance_exec :@variable do |name|
instance_variable_get name # => :value
end