«% w» - моя обычная реплика людям, которые слишком взволнованы по поводу читаемости Ruby. Работает каждый раз.
Крейг Stuntz
теперь у вас есть еще лучший ответ :-)
опечатки
6
Как нерелевантное примечание, URL-адрес этого вопроса некоторое время смущал меня во время загрузки страницы.
Фонд Моника иск
Ответы:
233
% w указывает как одинарные кавычки ''(без интерполяции переменных, меньше escape-последовательностей), а% W указывает как двойные кавычки "".
irb(main):001:0> foo="hello"=>"hello"
irb(main):002:0>%W(foo bar baz #{foo})=>["foo","bar","baz","hello"]
irb(main):003:0>%w(foo bar baz #{foo})=>["foo","bar","baz","\#{foo}"]
Ваш пример показывает двойные кавычки для% w тоже. Это правильно?
Фотон
Да. При выводе на печать Ruby всегда использует двойные кавычки и экранирует символы вроде #. '#{foo}'и "\#{foo}"дать вам ту же строку, которую можно проверить с '#{foo}' == "\#{foo}"в irb.
Брайан Кэмпбелл
Это немного сбивает с толку на первый взгляд, но спасибо за объяснение.
Фотон
29
Приложение, которое я нашел для% W против% w:
greetings =%W(hi hello #{"how do you do"})# => ["hi", "hello", "how do you do"]
Несмотря на старый пост, вопрос продолжает появляться, и ответы не всегда кажутся мне ясными. Итак, вот мои мысли.
% w и% W являются примерами типов ввода с разделителями , которые относятся к массивам. Есть другие типы, которые включают% q,% Q,% r,% x и% i.
Разница между прописными и строчными буквами заключается в том, что это дает нам доступ к функциям одинарных и двойных кавычек. С одинарными кавычками и строчными буквами% w у нас нет интерполяции кода (например, # {someCode}) и ограниченный диапазон управляющих символов (например, \, \ n). С двойными кавычками и прописными буквами% W у нас есть доступ к этим функциям.
В качестве разделителя может использоваться любой символ, а не только открытая скобка. Поиграйте с приведенными выше примерами, чтобы убедиться в этом.
Это хорошая статья. Я не осознавал, что вы можете создавать строки или другие вещи таким же образом, и включающие символы могут быть любыми. Например,%w&readable af&
Ответы:
% w указывает как одинарные кавычки
''
(без интерполяции переменных, меньше escape-последовательностей), а% W указывает как двойные кавычки""
.источник
#
.'#{foo}'
и"\#{foo}"
дать вам ту же строку, которую можно проверить с'#{foo}' == "\#{foo}"
вirb
.Приложение, которое я нашел для% W против% w:
источник
greetings = %w(hi hello how\ do\ you\ do)
% W выполняет нормальные замены в двойных кавычках. % w нет.
источник
Несмотря на старый пост, вопрос продолжает появляться, и ответы не всегда кажутся мне ясными. Итак, вот мои мысли.
% w и% W являются примерами типов ввода с разделителями , которые относятся к массивам. Есть другие типы, которые включают% q,% Q,% r,% x и% i.
Разница между прописными и строчными буквами заключается в том, что это дает нам доступ к функциям одинарных и двойных кавычек. С одинарными кавычками и строчными буквами% w у нас нет интерполяции кода (например, # {someCode}) и ограниченный диапазон управляющих символов (например, \, \ n). С двойными кавычками и прописными буквами% W у нас есть доступ к этим функциям.
В качестве разделителя может использоваться любой символ, а не только открытая скобка. Поиграйте с приведенными выше примерами, чтобы убедиться в этом.
Для полной записи с примерами% w и полного списка, escape-символов и разделителей - взгляните на: http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed .html
отметка
источник
%w&readable af&
Документация для строк процентов: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
источник
%W
используется для элементов массива в двойных кавычках, таких как%Q
, например,%w
используется для элементов массива в одинарных кавычках, таких как%q
.источник
Такой же как
%w
является символом сокращения для кавычки в строке!источник