From: "Jan-Erik R." Date: 2009-01-08T23:15:45+09:00 Subject: Re: Does instance_eval passes self as block argument? LAMBEAU Bernard schrieb: > Ruby's documentation of instance_eval shows the "signature" of instance_eval as: > > obj.instance_eval {| | block } => obj > > I assume that the block should not take any argument. However, if I > write the following code: > > class A > def sayhello(who) > puts "hello #{who}: #{object_id}" > end > end > > A.new.instance_eval do |who| > sayhello("me") > who.sayhello("who") > end > > it prints "hello me: -605850598" then "hello who: -605850598" > > Is is guaranteed to work?? > > blambeau > should be, because it's documented. Not in the code-example but in the text: In order to set the context, the variable self is set to obj while the code is executing, giving the code access to obj‘s instance variables.