Interpolation places variable values and expressions inside a string.

interpolation Ruby evaluates `#{...}` inside a double-quoted string.

String Interpolation

name
string_interpolation.rb
Replay: real traced execution (multi-file project)
name = "Ada"
points = 7

message = "#{name} scored #{points * 2}"
tag = "#{name.downcase}-#{points}"

puts message
puts "tag=#{tag}"
name = "Matz"
points = 7

message = "#{name} scored #{points * 2}"
tag = "#{name.downcase}-#{points}"

puts message
puts "tag=#{tag}"
name = "Grace"
points = 7

message = "#{name} scored #{points * 2}"
tag = "#{name.downcase}-#{points}"

puts message
puts "tag=#{tag}"
  1. name ← Ada, points ← 7, message ← Ada scored 14, tag ← ada-7

    1name→ Ada = "Ada"  #@name="Matz", "Grace"2points→ 7 = 734message→ Ada scored 14 = "#{nameAda} scored #{points7 * 2}"5tag→ ada-7 = "#{name.downcaseada}-#{points7}"67puts messageAda scored 148puts "tag=#{tagada-7}"
    outputAda scored 14
    tag=ada-7
  1. name ← Matz, points ← 7, message ← Matz scored 14, tag ← matz-7

    1name→ Matz = "Matz"2points→ 7 = 734message→ Matz scored 14 = "#{nameMatz} scored #{points7 * 2}"5tag→ matz-7 = "#{name.downcasematz}-#{points7}"67puts messageMatz scored 148puts "tag=#{tagmatz-7}"
    outputMatz scored 14
    tag=matz-7
  1. name ← Grace, points ← 7, message ← Grace scored 14, tag ← grace-7

    1name→ Grace = "Grace"2points→ 7 = 734message→ Grace scored 14 = "#{nameGrace} scored #{points7 * 2}"5tag→ grace-7 = "#{name.downcasegrace}-#{points7}"67puts messageGrace scored 148puts "tag=#{taggrace-7}"
    outputGrace scored 14
    tag=grace-7