Існує різниця між одинарними ''
та подвійними лапками ""
в Ruby з точки зору того, що підлягає оцінці для рядка.
Спочатку я хотів би уточнити, що в прямому вигляді рядка все, що знаходиться між одинарними або подвійними лапками, оцінюється як об'єкт рядка, що є екземпляром класу Ruby String.
Отже, 'stackoverflow'
і "stackoverflow"
обидва оцінюватимуть екземпляри класу String взагалі без різниці .
Різниця
Суттєвою відмінністю двох буквальних форм рядків (одинарних або подвійних лапок) є те, що подвійні лапки дозволяють виводити послідовності, в той час як одинарні лапки не мають!
Строковий літерал, створений одинарними лапками, не підтримує рядкову інтерполяцію і не уникає послідовностей.
Прекрасний приклад:
"\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 пропонують використовувати літерали з одною цитатою для ваших рядків і перейти до подвійних у випадку інтерполяції / уникнення послідовностей.