A few block-related questions

Hi all.

Here is the code:

str = ‘some string’
blk = lambda{|arg| self.text = str; self.text = arg}

class A
def text=(str)
#blah
end
end

A.new.instance_eval( &blk )

Questions about the code:

  1. str would be always visible to block? (Quick tests says yes, but it
    was
    unexpected for me)
  2. how can I pass argument to block?

Thanks.

Victor.

“V” == Victor S. [email protected] writes:

V> 1. str would be always visible to block? (Quick tests says yes, but
it was
V> unexpected for me)

yes,

V> 2. how can I pass argument to block?

use #instance_exec (1.9 only)

Guy Decoux

From: ts [mailto:[email protected]]

use #instance_exec (1.9 only)
Thanks a lot! I use exactly 1.9.

Guy Decoux

Victor.

2006/5/8, Victor S. [email protected]:

end

end

A.new.instance_eval( &blk )

Questions about the code:

  1. str would be always visible to block? (Quick tests says yes, but it was
    unexpected for me)
  2. how can I pass argument to block?

You can as well pass self as argument:

blk = lambda {|it, text| it.text=text}

a=A.new
blk.call a, str

Regards

robert

From: Robert K. [mailto:[email protected]]

   #blah

You can as well pass self as argument:

blk = lambda {|it, text| it.text=text}

a=A.new
blk.call a, str

Yes, I can. But it looks a bit ugly, isn’t it?

robert

Victor.