# Unroll array in initial vars

**URL:** <https://www.ruby-forum.com/t/unroll-array-in-initial-vars/81034>\
**Category:** Ruby\
**Created:** [January 3, 2007, 7:47am UTC](https://www.ruby-forum.com/t/unroll-array-in-initial-vars/81034 "2007-01-03T07:47:26Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Krekna\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/a9adbd/32.png) [@Krekna\_M](https://www.ruby-forum.com/u/Krekna_M)\
**Post date:** [January 3, 2007, 7:47am UTC](https://www.ruby-forum.com/t/unroll-array-in-initial-vars/81034/1 "2007-01-03T07:47:26Z")

</div>

Hi,

I’d like to know how I can unroll an array into some instance variables.

like this:

pseudocode:

class Person  
def initialize  
@name,@address,@place\_of\_birth,@whatever = Array  
end  
end

–\* So I can call \*–

person1 = Person.new(personal\_data)

personal\_data = [‘Eric’,‘Meanstreet 3’,‘Buenos Aires’,‘etc’]

I hope it’s clear what I’d like to know…

Krekna

---

<div class="post-metadata">

**Author:** ![Krekna\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/a9adbd/32.png) [@Krekna\_M](https://www.ruby-forum.com/u/Krekna_M)\
**Post date:** [January 3, 2007, 7:51am UTC](https://www.ruby-forum.com/t/unroll-array-in-initial-vars/81034/2 "2007-01-03T07:51:26Z")

</div>

On 03/01/07, Krekna M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ```
> @name,@address,@place_of_birth,@whatever = Array
> 
> ```
> 
> Krekna

You do it exactly as you described

irb(main):001:0\> personal\_data = [‘Eric’,‘Meanstreet 3’,‘Buenos Aires’]  
=\> [“Eric”, “Meanstreet 3”, “Buenos Aires”]  
irb(main):002:0\> name,address,place\_of\_birth = personal\_data  
=\> [“Eric”, “Meanstreet 3”, “Buenos Aires”]  
irb(main):003:0\> name  
=\> “Eric”  
irb(main):004:0\> address  
=\> “Meanstreet 3”  
irb(main):005:0\> place\_of\_birth  
=\> “Buenos Aires”  
irb(main):006:0\>

---

<div class="post-metadata">

**Author:** ![Krekna\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/a9adbd/32.png) [@Krekna\_M](https://www.ruby-forum.com/u/Krekna_M)\
**Post date:** [January 3, 2007, 7:57am UTC](https://www.ruby-forum.com/t/unroll-array-in-initial-vars/81034/3 "2007-01-03T07:57:27Z")

</div>

On Wed, 2007-01-03 at 15:50 +0900, Farrel L. wrote:

> > def initialize  
> > I hope it’s clear what I’d like to know…  
> > =\> [“Eric”, “Meanstreet 3”, “Buenos Aires”]  
> > irb(main):003:0\> name  
> > =\> “Eric”  
> > irb(main):004:0\> address  
> > =\> “Meanstreet 3”  
> > irb(main):005:0\> place\_of\_birth  
> > =\> “Buenos Aires”  
> > irb(main):006:0\>

What if you had an array of arrays of persons? Something like:  
[[“name\_1”, “add\_1”, “birth\_1”], [“name\_2”, “add\_2”, “birth\_2”] ]

so that each person could be processed in a loop?

---

<div class="post-metadata">

**Author:** ![Krekna\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/a9adbd/32.png) [@Krekna\_M](https://www.ruby-forum.com/u/Krekna_M)\
**Post date:** [January 3, 2007, 2:46pm UTC](https://www.ruby-forum.com/t/unroll-array-in-initial-vars/81034/4 "2007-01-03T14:46:18Z")

</div>

Good thinking indeed. But what if the parameter list is fixed? I think  
in this case it does not matter, or does it? The order was indeed  
wrong, ruby was irritated by it too so I changed it.

I’ve made the 2 dimensional array now.

Thanks for your help guys!

2007/1/3, Robert K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![Krekna\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/a9adbd/32.png) [@Krekna\_M](https://www.ruby-forum.com/u/Krekna_M)\
**Post date:** [January 3, 2007, 3:46pm UTC](https://www.ruby-forum.com/t/unroll-array-in-initial-vars/81034/5 "2007-01-03T15:46:36Z")

</div>

On 03.01.2007 14:45, Krekna M. wrote:

> Good thinking indeed. But what if the parameter list is fixed? I think  
> in this case it does not matter, or does it?

Err, what exactly do you mean by “fixed”? If you want to initialize  
your members always to the same values you do not need arguments for  
initialize at all.

If you just refer to the number and position of arguments, then this is  
exactly the case where explicit parameters have the biggest advantage  
just because of the number checking Ruby does.

Please try to be a bit more specific and thorough when you post. This  
dramatically increases the likelihood of helpful answers.

> The order was indeed  
> wrong, ruby was irritated by it too so I changed it.

🙂

```
robert
```

---

<div class="post-metadata">

**Author:** ![Krekna\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/a9adbd/32.png) [@Krekna\_M](https://www.ruby-forum.com/u/Krekna_M)\
**Post date:** [January 3, 2007, 11:25am UTC](https://www.ruby-forum.com/t/unroll-array-in-initial-vars/81034/6 "2007-01-03T11:25:52Z")

</div>

On 03.01.2007 07:46, Krekna M. wrote:

> end
> 
> –\* So I can call \*–
> 
> person1 = Person.new(personal\_data)
> 
> personal\_data = [‘Eric’,‘Meanstreet 3’,‘Buenos Aires’,‘etc’]
> 
> I hope it’s clear what I’d like to know…

Not exactly. I’m irritated by the order of statements. You use  
“personal\_data” before you assigned to it.

If you just accidentally got the order wrong: you can do it as Farrel  
pointed out. However, I would generally recommend having explicit  
parameters. So, while you can do

def initialize(parms)  
@name,@address,@place\_of\_birth,@whatever = parms  
end

I would prefer

def initialize(name,address,place\_of\_birth,whatever)  
@name = name  
@address = address  
@place\_of\_birth = place\_of\_birth  
@whatever = whatever  
end

It’s safer and gives you automatic checking of argument lists - at least  
Ruby checks the number of arguments for you. If you use the array  
approach some or even all values may end up nil without you noticing it.

Kind regards

```
robert
```
