Существует разница между одинарными ''
и двойными кавычками ""
в Ruby с точки зрения того, что должно быть оценено как строка.
Первоначально я хотел бы уточнить, что в буквенная форма строки , что находится между одинарными или двойными кавычками, оценивается как строковый объект, который является экземпляром класса Ruby String.
Следовательно, 'stackoverflow'
и "stackoverflow"
оба будут оценивать экземпляры класса String без различий .
Разница
Существенное различие между двумя буквальными формами строк (одинарные или двойные кавычки) заключается в том, что двойные кавычки допускают escape-последовательности, а одинарные кавычки - нет!
Строковый литерал, созданный одинарными кавычками, не поддерживает строковую интерполяцию , а не экранирует последовательности.
Хороший пример:
"\n" # will be interpreted as a new line
тогда * * одна тысяча тридцать шесть
'\n' # will display the actual escape sequence to the user
Интерполяция с одинарными кавычками не работает вообще:
'#{Time.now}'
=> "\#{Time.now}" # which is not what you want..
Лучшая практика
Как большинство Ruby Linters предлагают использовать литералы одинарных кавычек для строк и использовать двойные в случае интерполяции / экранирования последовательностей.