В руби для создания строк можно использовать и двойные и одинарные кавычки:
hello1 = 'Hello, World!'
hello2 = "Hello, World!"
В этой статьей поясним, когда какие лучше использовать.
И двойные и одинарные кавычки создают строку (объект класса String
).
Одинарные кавычки создают строку, воспринимая всё, что находится внутри между кавычками, как обычные символы. Никакой магии тут не будет:
name = 'Алексей'
puts 'Привет!\nМеня зовут #{name}!'
Выведет такое:
Привет!\nМеня зовут #{name}!
То есть \n
будет воспринято как буквально два символа — обратный слеш и буква n
, а не спецсимвол переноса строки. Интерполяция также работать не будет.
Единственный спецсимвол, который можно использовать в одинарных кавычках — заэкранированная одинарная кавычка:
string = 'Привет, я строка с символом \' внутри!'
puts string
Выведет такое:
Привет, я строка с символом ' внутри!
Но делать так, конечно, никогда не надо.
Двойные кавычки обрабатывают внутри себя спецсимволы и вычисляют руби выражения в конструкциях #{}
(интерполяции).
name = 'Алексей'
puts "Привет!\nМеня зовут #{name}!"
Выведет такое:
Привет!
Меня зовут Алексей!
В большинстве проектов на руби принято придерживаться одного из двух случаев:
- По умолчанию использовать одинарные кавычки. Использовать двойные кавычки только там, где внутри них есть какое-то вычисления:
puts 'Hello, World!'
puts "My name is #{name}!"
puts "Threee\nlines\nof text"
- По умолчанию использовать двойные кавычки. Использовать одинарные кавычки только там, где встречается строка, которая сама содержит двойные кавычки:
puts "Hello, World!"
puts 'My name is "Vadik"!'
Главное, пользуйтесь кавычками консистентно — если в одном файле вы придерживаетесь варианта 1, то придерживайтесь его во всем проекте (аналогично с вариантом 2).