[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Creating instance variables while looping over a hash

blaine

7/25/2007 12:58:00 PM

I"m reading in a YAML file using the yaml library in Ruby. My YAML
looks something like this:

config:
value1: Something here
value2: Something else

As I loop from the YAML like:

config["config"].each { |key, value| }

How could I set the key as an instance variable with the value of the
value of the key... resulting in:

@value1 = "Something here"
@value2 = "Something else"

Any thoughts?


3 Answers

dohzya

7/25/2007 1:13:00 PM

0

Le mercredi 25 juillet 2007 à 21:57 +0900, blaine a écrit :
> I"m reading in a YAML file using the yaml library in Ruby. My YAML
> looks something like this:
>
> config:
> value1: Something here
> value2: Something else
>
> As I loop from the YAML like:
>
> config["config"].each { |key, value| }
>
> How could I set the key as an instance variable with the value of the
> value of the key... resulting in:
>
> @value1 = "Something here"
> @value2 = "Something else"
>
> Any thoughts?
>

You should play with Object#instance_variable_set(name, value)

--
Etienne Vallette d'Osia


dohzya

7/25/2007 1:32:00 PM

0

Just an example to explain my mind :

---
# some representation of your data
config = {'config' => {'value1' => 'Something here', 'value2' =>
'Something else'}}

class A
def m config
config["config"].each { |key, value|
# attr_accessor key (optional)
self.class.instance_eval {attr_accessor key.to_s}
# @key = value
instance_variable_set "@#{key}", value
}
end
end

# test
a = A.new
a.m config
p a.value2
---

you can also specify if you want an attribute readable and/or writable

--
Etienne Vallette d'Osia


blaine

7/25/2007 2:06:00 PM

0

Your example really showed me, thank you so much Etienne. You have
really helped me understand it much better by your example.

--
Tim Knight


On Jul 25, 9:32 am, dohzya <doh...@gmail.com> wrote:
> Just an example to explain my mind :
>
> ---
> # some representation of your data
> config = {'config' => {'value1' => 'Something here', 'value2' =>
> 'Something else'}}
>
> class A
> def m config
> config["config"].each { |key, value|
> # attr_accessor key (optional)
> self.class.instance_eval {attr_accessor key.to_s}
> # @key = value
> instance_variable_set "@#{key}", value
> }
> end
> end
>
> # test
> a = A.new
> a.m config
> p a.value2
> ---
>
> you can also specify if you want an attribute readable and/or writable
>
> --
> Etienne Vallette d'Osia