Hello everyone, this is my first post on this forum and I'm quite new to
ruby. My dilemma is that I've got an array which holds a whole lot of
arrays inside it and I want to print a element of one of the arrays
within the overall array. Got it? Here's an example
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:
On Thursday 20 January 2011 18:34:26 Josh Rowe wrote:
Hello everyone, this is my first post on this forum and I'm quite new to
ruby. My dilemma is that I've got an array which holds a whole lot of
arrays inside it and I want to print a element of one of the arrays
within the overall array. Got it? Here's an example
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:
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!
···
On Thursday 20 January 2011 18:34:26 Josh Rowe wrote:
Hello everyone, this is my first post on this forum and I'm quite new to
ruby. My dilemma is that I've got an array which holds a whole lot of
arrays inside it and I want to print a element of one of the arrays
within the overall array. Got it? Here's an example
Note that beside using Struct to quickly create a proper class I also
used symbols as type names since you will most likely have only few of
those which repeat often and in this case symbols are more efficient
than strings.
Kind regards
robert
···
On Thu, Jan 20, 2011 at 11:02 AM, Stefano Crocco <stefano.crocco@alice.it> wrote:
On Thursday 20 January 2011 18:34:26 Josh Rowe wrote:
Hello everyone, this is my first post on this forum and I'm quite new to
ruby. My dilemma is that I've got an array which holds a whole lot of
arrays inside it and I want to print a element of one of the arrays
within the overall array. Got it? Here's an example
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: