# Define an each iterator, etc

**URL:** <https://www.ruby-forum.com/t/define-an-each-iterator-etc/86799>\
**Category:** Ruby\
**Created:** [February 26, 2007, 2:45am UTC](https://www.ruby-forum.com/t/define-an-each-iterator-etc/86799 "2007-02-26T02:45:34Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Guillaume\_Nargeot](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/b5e925/32.png) [@Guillaume\_Nargeot](https://www.ruby-forum.com/u/Guillaume_Nargeot)\
**Post date:** [February 26, 2007, 2:45am UTC](https://www.ruby-forum.com/t/define-an-each-iterator-etc/86799/1 "2007-02-26T02:45:34Z")

</div>

I would like to know if it’s possible to define iterators like each for  
a  
class you have written ?  
Is it also possible to write methods that can have the following  
behavior/usage:

object.method do |var|

# something

end

---

<div class="post-metadata">

**Author:** ![Guillaume\_Nargeot](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/b5e925/32.png) [@Guillaume\_Nargeot](https://www.ruby-forum.com/u/Guillaume_Nargeot)\
**Post date:** [February 26, 2007, 2:50am UTC](https://www.ruby-forum.com/t/define-an-each-iterator-etc/86799/2 "2007-02-26T02:50:34Z")

</div>

2007/2/26, Guillaume Nargeot  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> I would like to know if it’s possible to define iterators like each for a  
> class you have written ?  
> Is it also possible to write methods that can have the following  
> behavior/usage:
> 
> object.method do |var|
> 
> # something
> 
> end

Hi,

see [http://www.rubycentral.com/book/tut\_containers.html](http://www.rubycentral.com/book/tut_containers.html)

look for “blocks and iterators”

Best regards,

---

<div class="post-metadata">

**Author:** ![Guillaume\_Nargeot](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/b5e925/32.png) [@Guillaume\_Nargeot](https://www.ruby-forum.com/u/Guillaume_Nargeot)\
**Post date:** [February 26, 2007, 2:52am UTC](https://www.ruby-forum.com/t/define-an-each-iterator-etc/86799/3 "2007-02-26T02:52:34Z")

</div>

Hi –

On 2/25/07, Guillaume Nargeot  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I would like to know if it’s possible to define iterators like each for a  
> class you have written ?

Sure. And if you define each and include Enumerator, you get all sorts  
of methods along with it (find, select, inject, etc.).

> Is it also possible to write methods that can have the following  
> behavior/usage:
> 
> object.method do |var|
> 
> # something
> 
> end

Yes; such a method is called an iterator 🙂

def object.m  
yield 10  
end

object.m do |var|  
# var is equal to 10  
end

Have a look in any Ruby tutorial book for more.

David
