I'm expecting this output:
output:xyz
But if I type the following:
a = ["x", "y", "z"]
print "output:" + a.each {|i| print i}.to_s
Why do I get an 'xyz' before the word output as well as after it?
xyzoutput:xyz
I'm expecting this output:
output:xyz
But if I type the following:
a = ["x", "y", "z"]
print "output:" + a.each {|i| print i}.to_s
Why do I get an 'xyz' before the word output as well as after it?
xyzoutput:xyz
In irb:
>> %w{x y z}.each {|i| i }
=> ["x", "y", "z"]
The return value of a call to each
is the Enumerable
object that it was called on. So you're basically printing out each element of the array in the block you're passing to each
, and then converting the array to a string and printing it again, having concatenated it with the the string "output:"
.
probably what you want here is:
puts "output: #{a.join}"
or, more verbosely, in case the idea is clearer this way:
puts "output: #{a.map {|element| element.to_s}.join}"