Чем двойные кавычки (") отличаются от одинарных (')

[А] Алексей Щёголев, 21 июля 2016, 19:51 , 2 подписчика

Нет вопросов? Так я первый буду ;)

RubyMine периодически предлагает двойные кавычки заменять на апострофы по крайней мере в строке:

puts 'Привет мир'

Можете пояснить, когда какие лучше использовать?

Обсуждение (1)


Вадим Венедиктов Учитель

[В]

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

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

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

Двойные кавычки выполняют вычисления внутри себя, поэтому, естественно, работают чуть медленее. Отсюда простое правило, если в строке нет ничего сложного (то есть, просто символы), используйте одинарные кавычки, а если в строке есть какие-то преобразования или спецсимволы, используйте двойные.

Именно так, кстати, и делает RubyMine при автозамене.