Ruby - какая разница между одиночными и двойными кавычками?

Итак, я следую этому руководству Ruby: Изучите Ruby Hard Way.

В упражнении 16 (см. выше) вы пишете script, который записывает строки в файл. Соответствующий код:

print "line 1: "; line1 = STDIN.gets.chomp()
print "line 2: "; line2 = STDIN.gets.chomp()
print "line 3: "; line3 = STDIN.gets.chomp()

puts "I'm going to write these to the file."

target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

Однако, будучи ленивой задницей, которой я являюсь, я изначально набрал пример, используя одинарные кавычки в последних шести строках, вместо двойных кавычек, которые посоветует вам использовать.

Это повлияло на файл. Когда я использовал одинарные кавычки, файл выглядел так:

this is line 1\nthis is line 2\nthis is line 3

После переключения этих котировок в двойные кавычки файл выглядел так, как ожидалось:

this is line 1
this is line 2
this is line 3

Может ли кто-нибудь сказать мне, почему это так? Строки с одиночными кавычками просто игнорируют escape-символы, такие как \n или \t?

Ответ 1

Да, строки с одним кавычком не обрабатывают escape-коды ASCII, и они не выполняют строчную интерполяцию.

name = 'Joe'
greeting = 'Hello, #{name}' # this won't produce "Hello, Joe"