例項評估

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