Idiomatic Printing an array with commas

C

Chuck Brotman

Hi,

I want to print an array (of strings, mostly) with commas separating the
elements (so it would look like the result in the irb

a =[one,two,three]
printspecial a # should produce "[one, two, three]" not "onetwothree"
as it # currently does


I tried a.map{|s| s.to_s + ", "
but this gives me [one, two, three,]
with an extra comma trailing the last element

Is there a nice ruby idiom to do what I want (or to simply produce the
necessary string for printing?

Or, do I have to resort to an explicit loop checking for the last
element and not alter it?
 
D

Dominik Honnef

Chuck Brotman said:
Hi,

I want to print an array (of strings, mostly) with commas separating the
elements (so it would look like the result in the irb
[snip]


Is there a nice ruby idiom to do what I want (or to simply produce the
necessary string for printing?

a = ["one", "two", "three"]
puts a.inspect
puts "[" + a.join(", ") + "]"

# >> ["one", "two", "three"]
# >> [one, two, three]
 
B

Brian Candler

Chuck said:
I want to print an array (of strings, mostly) with commas separating the
elements (so it would look like the result in the irb

You want String#inspect. (irb calls #inspect on the object it's
displaying)

$ irb --simple-prompt
a = ["one","two","three"] => ["one", "two", "three"]
puts a.inspect
["one", "two", "three"]
=> nil
 
J

Josh Cheek

[Note: parts of this message were removed to make it a legal post.]

Hi,

I want to print an array (of strings, mostly) with commas separating the
elements (so it would look like the result in the irb

a =[one,two,three]
printspecial a # should produce "[one, two, three]" not "onetwothree"
as it # currently does


I tried a.map{|s| s.to_s + ", "
but this gives me [one, two, three,]
with an extra comma trailing the last element

Is there a nice ruby idiom to do what I want (or to simply produce the
necessary string for printing?

Or, do I have to resort to an explicit loop checking for the last
element and not alter it?
As other people have pointed out, you are looking for the inspect method. If
you are wanting to print it
p a
puts a.inspect

are the same thing.




As far as your issue with the comma after the last element, the join method
will do what you were trying to do with map, except it won't put it on the
last element.

a.join(', ') # => "1, 2, 3"
 
C

Chuck Brotman

".inspect", ".join", "*". Of course, there isn't just one way to get
the job done in Ruby!

I appreciate all the tips


Thanks,

Chuck
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,572
Members
45,046
Latest member
Gavizuho

Latest Threads

Top