instance_eval & instance_exec

class A def initialize(x,y) @x = x @y = y endend</pre></code>

obj = A.new('rays', 'rashmi')obj.instanceeval{puts "Hello #{@x} #{@y}"} => Hello rays rashmi</code></pre>obj.instanceexec("Hello"){|arg| puts "#{arg} #{@x} #{@y} "}=> Hello rays rashmi</code></pre>

Portanto, não podemos passar o argumento para o bloco na instância eval, mas podemos passar a instância exec. instance_exec é introduzido no Ruby 1.9.

Essa é a única diferença na avaliação da instância e execução da instância .
Este recurso foi portado para o ruby ​​1.8.7. Você também pode testar isso no ruby ​​1.8.7