How to dump contents of an array as parameters

Hi
ı am a beginner Rubyist and I have a small problem.

Track=Struct.new(:name,:surname)

#This works perfectly
tempTrack=Track.new(15,“b”)
p tempTrack.name
p tempTrack.surname

But I want to create a temptrack with an incoming array how can i
convert

[15,“b”] in to 15,“b”

#And of course this doesnt work
incomingArray=[15,“b”]
tempTrack=Track.new(incomingArray)
p tempTrack.name
p tempTrack.surname

Thanks.
Akif,

Alle mercoledì 22 agosto 2007, Akif T. ha scritto:

p tempTrack.name
p tempTrack.surname

Thanks.
Akif,

You need to do this:

Track.new(*[15, ‘b’])

I hope this helps

Stefano

Stefano C. wrote:

You need to do this:

Track.new(*[15, ‘b’])

I hope this helps

Stefano

Thank you Stefano. It worked.

Akif,

On Aug 22, 7:11 am, Akif T. [email protected] wrote:

Akif,

Posted viahttp://www.ruby-forum.com/.

Just to expand (pun?) the concept:

the * operator, when applied to method arguments, work two ways, if I
understand correctly:

In a method call, putting * before an array breaks it apart into its
elements and passes them as individual arguments to a method. So
x.do_stuff(a,b,c,)
is equivalent to
x.do_stuff(*[a,b,c])
or
y = [a,b,c]
x.do_stuff(*y)

In a method declaration, * can be used to collect an undetermined
number of arguments into an array. Suppose that you have a method that
accepts optional arguments, and depending on the options there could
be 1, 2, or 3 values passed in. One way (there are others) to handle
that would be to make the method look like this:

def do_stuff(*args)
if args.length > 2
puts “optional stuff”
else
puts “default stuff”
end
end

I believe I’ve gotten this right, but I’m something of a Nuby myself.
Any comments or corrections of my explanation would be greatly
appreciated.

HTH,
Andrew

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs