Я действительно новичок в Ruby , и я пытаюсь понять , если есть время конкретного когда я должен использовать ""
против ''
.
Я использую одинарные кавычки большую часть времени, потому что это легче набирать, но я не уверен, что должен.
например get 'user/new'
противget "user/new"
Ответы:
" "
позволяет выполнять интерполяцию строк, например:источник
кроме интерполяции, другое отличие состоит в том, что «escape-последовательность» не работает в одинарных кавычках
источник
'don\'t'
.puts '\\'
Она напечатает только одну косую черту. смотрите здесь stackoverflow.com/questions/25499046/…Чтобы ответить на ваш вопрос, вы должны использовать,
""
когда вы хотите выполнить интерполяцию строк:В противном случае используйте простые кавычки.
Кроме того, если вам интересно, есть ли разница в производительности, у StackOverflow есть отличный вопрос по этому поводу.
И если вы действительно новичок в RoR, я призываю вас взять приличную книгу по Ruby, чтобы выучить основы языка. Это поможет вам понять, что вы делаете (и удержит вас от мысли, что Rails - это магия). Я лично рекомендую The Well-заземленный Rubyist .
источник
Существует разница между одинарными
''
и двойными кавычками""
в Ruby с точки зрения того, что должно быть оценено как строка.Вначале я хотел бы уточнить, что в буквальной форме строки все, что находится между одинарными или двойными кавычками, оценивается как строковый объект, который является экземпляром класса Ruby String.
Следовательно,
'stackoverflow'
и"stackoverflow"
оба будут оценивать экземпляры класса String без разницы вообще .Различия
Существенное различие между двумя буквальными формами строк (одинарные или двойные кавычки) заключается в том, что двойные кавычки допускают escape-последовательности, а одинарные кавычки - нет!
Строковый литерал, созданный одинарными кавычками, не поддерживает интерполяцию строк и не экранирует последовательности.
Хороший пример:
в то время как
Интерполяция с одинарными кавычками не работает вообще:
Лучшая практика
Поскольку большинство Ruby Linters предлагают использовать литералы одинарных кавычек для ваших строк и использовать двойные в случае интерполяции / экранирования последовательностей.
источник
Пример кода Escape:
Пример интерполяции:
источник
Аналогично ответу "\ n" при печати, следующий пример различий
похоже, что * был преобразован в экранированный символ в двойных кавычках, но не в одинарных. Кстати, это повлияет на вывод при использовании в регулярном выражении, например, str.gsub (/ регулярное выражение /, '\ 1, \ 2')
источник
Еще одна причина, по которой вы хотите использовать одинарные кавычки, заключается в передаче шаблона регулярного выражения в виде строки:
Этот шаблон регулярного выражения будет работать, потому что передается в одинарных кавычках:
Этот шаблон регулярного выражения потерпит неудачу, потому что передан в двойных кавычках (вам придется дважды экранировать его, чтобы заставить его работать):
источник
В этом конкретном случае не имеет значения, как вы это пишете. Они эквивалентны. Кроме того, вы можете прочитать еще несколько руководств / учебников по Ruby :)
источник