How to use a hash inside a Struct?

Is there a way to use a hash inside a Structure. Something like:

object = Struct.new(Hash.new(), :attr2, :attr3)

I know this doesn’t work, but do you get the idea of what I am trying to
do?

Jayson

On 10/22/07, Jayson W. [email protected] wrote:

Nope. What are you trying to do?

-Daniel

On 22/10/2007, Jayson W. [email protected] wrote:

Is there a way to use a hash inside a Structure. Something like:

object = Struct.new(Hash.new(), :attr2, :attr3)

Struct objects except Symbols. What is it you’re trying to do?

– Thomas A.

I am creating a class that creates elements of a house. For the part
that creates new rooms, I wanted to link the room name with a room id.
There may be multiple rooms with the same name, but only one room with
the unique combination of name and id. I was thinking to use a Hash
inside the structure definition of the room for the name and id.

On 10/22/07, Thomas A. [email protected] wrote:On 22/10/2007,
Jayson W. [email protected] wrote:

Is there a way to use a hash inside a Structure. Something like:

object = Struct.new(Hash.new(), :attr2, :attr3)

Do you mean to do something like this?:

Thing = Struct.new(:attr1,:attr2,:attr3)
t = Thing.new(Hash.new, nil, nil)

I think both of these methods will work

Thing = Struct.new(:attr1,:attr2,:attr3)
t = Thing.new(Hash.new, nil, nil)

and…

require ‘ostruct’

house = OpenStruct.new
house.room = {:room_id => ‘id’, :room_name => ‘name’}
house.attr1 = ‘some value’

I was thinking that the attributes in the structure had to be typed
first (a bit of c left in me). But it makes sense that I can set up
the attribute and put whatever I want there.
The second method looks a bit RubyTk’ish. I wonder if RubyTk uses
OpenStruct.
Anyway, Thanks. This is just what I was looking for

Jayson

It might be easier to use OpenStruct.

require ‘ostruct’

house = OpenStruct.new
house.room = {:room_id => ‘id’, :room_name => ‘name’}
house.attr1 = ‘some value’
etc…

On 10/22/07, Jayson W. [email protected] wrote:

Nope. What are you trying to do?

-Daniel

“Every child has many wishes. Some include a wallet, two chicks and a
cigar,
but that’s another story.”