Search code examples
rubystring-concatenationstring-interpolation

String concatenation vs. interpolation in Ruby


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?


Solution

  • 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)