Skip to content

Latest commit

 

History

History
81 lines (54 loc) · 3.31 KB

ruby-dvoynye-kavychki-vs-odinarnye.md

File metadata and controls

81 lines (54 loc) · 3.31 KB

Ruby: Двойные кавычки " vs. одинарные '

В руби для создания строк можно использовать и двойные и одинарные кавычки:

hello1 = 'Hello, World!'
hello2 = "Hello, World!"

В этой статьей поясним, когда какие лучше использовать.

И двойные и одинарные кавычки создают строку (объект класса String).

Одинарные кавычки

Одинарные кавычки создают строку, воспринимая всё, что находится внутри между кавычками, как обычные символы. Никакой магии тут не будет:

name = 'Алексей'
puts 'Привет!\nМеня зовут #{name}!'

Выведет такое:

Привет!\nМеня зовут #{name}!

То есть \n будет воспринято как буквально два символа — обратный слеш и буква n, а не спецсимвол переноса строки. Интерполяция также работать не будет.

Единственный спецсимвол, который можно использовать в одинарных кавычках — заэкранированная одинарная кавычка:

string = 'Привет, я строка с символом \' внутри!'
puts string

Выведет такое:

Привет, я строка с символом ' внутри!

Но делать так, конечно, никогда не надо.

Двойные кавычки

Двойные кавычки обрабатывают внутри себя спецсимволы и вычисляют руби выражения в конструкциях #{} (интерполяции).

name = 'Алексей'
puts "Привет!\nМеня зовут #{name}!"

Выведет такое:

Привет!
Меня зовут Алексей!

Когда какие использовать?

В большинстве проектов на руби принято придерживаться одного из двух случаев:

  1. По умолчанию использовать одинарные кавычки. Использовать двойные кавычки только там, где внутри них есть какое-то вычисления:
puts 'Hello, World!'
puts "My name is #{name}!"
puts "Threee\nlines\nof text"
  1. По умолчанию использовать двойные кавычки. Использовать одинарные кавычки только там, где встречается строка, которая сама содержит двойные кавычки:
puts "Hello, World!"
puts 'My name is "Vadik"!'

Главное, пользуйтесь кавычками консистентно — если в одном файле вы придерживаетесь варианта 1, то придерживайтесь его во всем проекте (аналогично с вариантом 2).