Show elements of array separated

Why when is showed an array into a variable , it is showed with all
characters followed?


foo = [‘a’, ‘b’, ‘c’]
puts “the content is: #{foo}” # => the content is: abc

I’m supposed that is because at the first it converts the array into a
string. But is there any way of show the elements of array separated?

On Sat, Aug 30, 2008 at 9:05 AM, Kless [email protected] wrote:

Why when is showed an array into a variable , it is showed with all
characters followed?


foo = [‘a’, ‘b’, ‘c’]
puts “the content is: #{foo}” # => the content is: abc

puts “#{foo.join(‘,’)}”

puts arr.join(’, ')

On 30.08.2008 10:09, Kless wrote:

Why when is showed an array into a variable , it is showed with all
characters followed?


foo = [‘a’, ‘b’, ‘c’]
puts “the content is: #{foo}” # => the content is: abc

I’m supposed that is because at the first it converts the array into a
string. But is there any way of show the elements of array separated?

irb(main):001:0> foo = %w{a b c}
=> [“a”, “b”, “c”]
irb(main):002:0> foo.to_s
=> “abc”
irb(main):003:0> foo.join ", "
=> “a, b, c”
irb(main):004:0>

Kind regards

robert

Thanks! I was too complicated:

irb(main):001:0> foo = [‘a’, ‘b’, ‘c’]
=> [“a”, “b”, “c”]
irb(main):002:0> s = ‘’
=> “”
irb(main):003:0> foo.each {|x| s += x.to_s + ', '}
=> [“a”, “b”, “c”]
irb(main):004:0> puts s[0…-3]
a, b, c
=> nil

On 30.08.2008 13:45, Kless wrote:

=> nil
If you want to do it manually, I’d rather do something like this:

irb(main):004:0> s = “”
=> “”
irb(main):005:0> foo.each_with_index {|x,i| s << ", " unless i == 0; s
<< i.to_s}
=> [“a”, “b”, “c”]
irb(main):006:0> s
=> “0, 1, 2”
irb(main):007:0>

Or even

irb(main):010:0> foo.inject {|a,b| “#{a}, #{b}”}
=> “a, b, c”
irb(main):011:0> [“a”].inject {|a,b| “#{a}, #{b}”}
=> “a”
irb(main):012:0> [].inject {|a,b| “#{a}, #{b}”}
=> nil
irb(main):013:0>

But note the empty Array case.

Kind regards

robert

Robert K. wrote:

Kind regards

robert

irb(main):006:0> [].inject{|a,b| “#{a}, #{b}” } or “”
=> “”

Kless wrote:

Why when is showed an array into a variable , it is showed with all
characters followed?


foo = [‘a’, ‘b’, ‘c’]
puts “the content is: #{foo}” # => the content is: abc

I’m supposed that is because at the first it converts the array into a
string. But is there any way of show the elements of array separated?

puts foo.inspect

It will look exactly like in irb, because irb uses inspect.

foo = [‘a’, ‘b’, ‘c’]
puts “the content is: #{foo.join(’, ')}.”

Hi –

On Sat, 30 Aug 2008, Michael M. wrote:

Kind regards

robert

irb(main):006:0> [].inject{|a,b| “#{a}, #{b}” } or “”
=> “”

Or:

[].inject {…}.to_s

In any case I think this is a job for #join :slight_smile:

David

David A. Black wrote:

=> nil

Or:

[].inject {…}.to_s

In any case I think this is a job for #join :slight_smile:

David

Using inject you could do something to each element (capitalize, for
example) at the same time. Though, you could just use arr.map.join if
you wanted to do that.