String concatenation vs. interpolation in Ruby

Jeff H. picture Jeff H. · Apr 9, 2012 · Viewed 30.3k times · Source

I am just starting to learn Ruby (first time programming), and have a basic syntactical question with regards to variables, and various ways of writing code.

Chris Pine's "Learn to Program" taught me to write a basic program like this...

num_cars_again= 2
puts 'I own ' + num_cars_again.to_s + ' cars.'

This is fine, but then I stumbled across the tutorial on ruby.learncodethehardway.com, and was taught to write the same exact program like this...

num_cars= 2
puts "I own #{num_cars} cars."

They both output the same thing, but obviously option 2 is a much shorter way to do it.

Is there any particular reason why I should use one format over the other?

Answer

Phrogz picture Phrogz · Apr 9, 2012

Whenever TIMTOWTDI (there is more than one way to do it), you should look for the pros and cons. Using "string interpolation" (the second) instead of "string concatenation" (the first):

Pros:

  • Is less typing
  • Automatically calls to_s for you
  • More idiomatic within the Ruby community
  • Faster to accomplish during runtime

Cons:

  • Automatically calls to_s for you (maybe you thought you had a string, and the to_s representation is not what you wanted, and hides the fact that it wasn't a string)
  • Requires you to use " to delimit your string instead of ' (perhaps you have a habit of using ', or you previously typed a string using that and only later needed to use string interpolation)