7 ответов:
кроме интерполяции, еще одно отличие заключается в том, что "escape-последовательность" не работает в одинарной кавычке
puts 'a\nb' # just print a\nb puts "a\nb" # print a, then b at newline
чтобы ответить на ваш вопрос, вы должны использовать
""когда вы хотите сделать интерполяцию строк:a = 2 puts "#{a}"используйте простые кавычки в противном случае.
кроме того, если вам интересно, есть ли разница в плане производительности, есть отличный вопрос об этом на StackOverflow.
хорошо обоснованный рубист.
есть разница между один
''и двойные кавычки""в Ruby с точки зрения того, что должно быть оценено в строку.Первоначально, я хотел бы уточнить, что в литеральная форма строки что бы ни было между один или двойной quotes вычисляется как строковый объект, который является экземпляром класса Ruby String.
таким образом,
'stackoverflow'и"stackoverflow"оба будут оценивать экземпляры String class без разницы.разница
существенная разница между двумя литеральными формами строк (одинарные или двойные кавычки) это двойные кавычки позволяют escape-последовательности, а одинарные кавычки нет!
строковый литерал, созданный одинарными кавычками, не поддерживает интерполяция строк и не escape-последовательности.
A аккуратный пример:
"\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..лучшие практики
как и большинство рубиновых линтеров предлагают используйте литералы с одной кавычкой для ваших строк и перейти на двойные в случае интерполяции / экранирования последовательностей.
строки с одинарными кавычками не обрабатывают escape-коды ASCII (\n, \t и т. д.), И они не делайте строковую интерполяцию, в то время как двойные кавычки делают и то, и другое.
побег код примера:
2.4.0 :004 > puts 'Hello \n World' Hello \n World 2.4.0 :005 > puts "Hello \n World" Hello Worldинтерполяция пример:
2.4.0 :008 > age=27 => 27 2.4.0 :009 > puts 'Age: #{age}' Age: #{age} 2.4.0 :009 > puts "Age: #{age}" Age: 27
подобно ответу "\n " в печати, ниже приведен еще один случай разницы
puts "" -> get special character puts '' -> getТак выглядит * был преобразован в экранированный символ в двойных кавычках, но не в одинарных кавычках. Кстати, это повлияет на выход при использовании в регулярном выражении например., ул.gsub(/регулярное выражение/, '\1,\2')
в этом конкретном случае не имеет значения, как вы его пишете. Они эквивалентны. Кроме того, вы можете прочитать еще несколько руководств/учебников Ruby :)
Comments