# A few block-related questions

**URL:** <https://www.ruby-forum.com/t/a-few-block-related-questions/59896>\
**Category:** Ruby\
**Created:** [May 8, 2006, 10:26am UTC](https://www.ruby-forum.com/t/a-few-block-related-questions/59896 "2006-05-08T10:26:13Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![victor123789](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/f0a364/32.png) [@victor123789](https://www.ruby-forum.com/u/victor123789)\
**Post date:** [May 8, 2006, 10:26am UTC](https://www.ruby-forum.com/t/a-few-block-related-questions/59896/1 "2006-05-08T10:26:13Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![victor123789](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/f0a364/32.png) [@victor123789](https://www.ruby-forum.com/u/victor123789)\
**Post date:** [May 8, 2006, 11:50am UTC](https://www.ruby-forum.com/t/a-few-block-related-questions/59896/2 "2006-05-08T11:50:51Z")

</div>

> > > > > “V” == Victor S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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

---

<div class="post-metadata">

**Author:** ![victor123789](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/f0a364/32.png) [@victor123789](https://www.ruby-forum.com/u/victor123789)\
**Post date:** [May 8, 2006, 3:48pm UTC](https://www.ruby-forum.com/t/a-few-block-related-questions/59896/3 "2006-05-08T15:48:19Z")

</div>

From: ts [[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]

> use #instance\_exec (1.9 only)  
> Thanks a lot! I use exactly 1.9.

> Guy Decoux

Victor.

---

<div class="post-metadata">

**Author:** ![victor123789](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/f0a364/32.png) [@victor123789](https://www.ruby-forum.com/u/victor123789)\
**Post date:** [May 8, 2006, 12:02pm UTC](https://www.ruby-forum.com/t/a-few-block-related-questions/59896/4 "2006-05-08T12:02:56Z")

</div>

2006/5/8, Victor S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> ```
> 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

---

<div class="post-metadata">

**Author:** ![victor123789](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/f0a364/32.png) [@victor123789](https://www.ruby-forum.com/u/victor123789)\
**Post date:** [May 8, 2006, 3:51pm UTC](https://www.ruby-forum.com/t/a-few-block-related-questions/59896/5 "2006-05-08T15:51:31Z")

</div>

From: Robert K. [[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]

> > ```
> > #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.
