From: Josh Rowe Date: 2011-01-20T19:26:21+09:00 Subject: Re: Array within array question Stefano Crocco wrote in post #976226: > On Thursday 20 January 2011 18:34:26 Josh Rowe wrote: >> puts deck[0[cdname]] >> >> Does anyone(I'm sure most of you) know how to get this to work with a >> minimal amount of extra code. >> >> Regards Joshua > > puts deck[0][cdname] > > The [] method of class array (Array#[]), which is what you actually call > when > writing an_array[3] returns the object with that index in the array. In > your > case, deck[0] returns the element with index 0, that is the array card1. > To > retrieve the name of the card, you then access the element with index > cdname > of this array, again using []. To be more explicit, you can split the > above > line in two using an intermediate variable: > > card = deck[0] > puts card[cdname] > > However I think that using arrays to represent cards isn't the best way > to go. > Arrays usually represent lists of things (for example, it's correct to > use > them for a deck of cards). The contents of your cards, however, aren't > lists, > since each item has a different meaning. > > A better way to represent cards would be to use hashes: > > card1 = {:name => "Ninja Monster", :type => "monster", :number => 1400} > card2 = {:name => "Ninja Mage", :type => "monster", :number => 1600} > deck = [card1, card2] > puts deck[0][:name] > > I hope this helps > > Stefano Thank you for that lightning quick response. I've just printed out some pages on Hashes from an ebook and from what I've seen your advice seems to be a good way to go. This game is only in early development and it's good to make changes like this near the start. I will start changing my other code to use hashes now. It's good to see such a great community like this forum which has lots of people who readily give up there expertise to help others. Thanks again Stefano and have a good year in ruby programming! -- Posted via http://www.ruby-forum.com/.