# Iterator inside string

**URL:** <https://www.ruby-forum.com/t/iterator-inside-string/72869>\
**Category:** Ruby\
**Created:** [October 19, 2006, 3:30pm UTC](https://www.ruby-forum.com/t/iterator-inside-string/72869 "2006-10-19T15:30:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![akbarhome](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/58956e/32.png) [@akbarhome](https://www.ruby-forum.com/u/akbarhome)\
**Post date:** [October 19, 2006, 3:30pm UTC](https://www.ruby-forum.com/t/iterator-inside-string/72869/1 "2006-10-19T15:30:48Z")

</div>

Hi,

This is the code:  
a = [‘a’, ‘b’]  
b = 2  
stringbla = “home #{ a.each {|i| i \* b } } work”  
puts stringbla

output:  
home ab work

How do I modifiy the iterator so the output will be:  
home aabb work

Thank you.

---

<div class="post-metadata">

**Author:** ![akbarhome](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/58956e/32.png) [@akbarhome](https://www.ruby-forum.com/u/akbarhome)\
**Post date:** [October 19, 2006, 3:36pm UTC](https://www.ruby-forum.com/t/iterator-inside-string/72869/2 "2006-10-19T15:36:50Z")

</div>

On 19.10.2006 15:29, akbarhome wrote:

> How do I modifiy the iterator so the output will be:  
> home aabb work
> 
> Thank you.

use #map instead of #each

```
robert
```

---

<div class="post-metadata">

**Author:** ![akbarhome](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/58956e/32.png) [@akbarhome](https://www.ruby-forum.com/u/akbarhome)\
**Post date:** [October 19, 2006, 3:38pm UTC](https://www.ruby-forum.com/t/iterator-inside-string/72869/3 "2006-10-19T15:38:50Z")

</div>

On 19/10/06, akbarhome [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> How do I modifiy the iterator so the output will be:  
> home aabb work
> 
> Thank you.

stringbla = “home #{ a.map {|i| i \* b } } work”

Farrel

---

<div class="post-metadata">

**Author:** ![akbarhome](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/58956e/32.png) [@akbarhome](https://www.ruby-forum.com/u/akbarhome)\
**Post date:** [October 19, 2006, 3:42pm UTC](https://www.ruby-forum.com/t/iterator-inside-string/72869/4 "2006-10-19T15:42:50Z")

</div>

On 10/19/06, akbarhome [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> How do I modifiy the iterator so the output will be:  
> home aabb work
> 
> Thank you.

The to\_s method is going to be called on whatever value the #{ … }  
evaluates to. That’s why you are getting “ab”

```
a.each {|i| i * b}.to_s # => "ab"

```

if you use collect rather than each, you’ll get

```
x = a.collect {|i| i * b} # => ["aa", "bb"]
x.to_s # => "aabb"

```
