В чем разница?
Рубиновые массивы:% w против% W
Ответ 1
% w цитируется как одинарные кавычки ''
(без переменной интерполяции, меньше управляющих последовательностей), а% 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}"]
Ответ 2
Приложение, которое я нашел для% W vs% w:
greetings = %W(hi hello #{"how do you do"})
# => ["hi", "hello", "how do you do"]
Ответ 3
% W выполняет обычные замены двойной кавычки. % w не делает.
Ответ 4
Хотя старый пост, вопрос продолжает подниматься, и ответы мне не всегда кажутся ясными. Итак, вот мои мысли.
% 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
Марк
Ответ 5
Документация для процентных строк: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
Ответ 6
%W
используется для элементов с двумя кавычками, таких как %Q
, например,
foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]
%W
используется для элементов с одним кадром, таких как %Q
.
%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]
Ответ 7
array = %w(a b c d)
То же, что и
array = ["a", "b", "c", "d"]
%w
- это сокращенный символ для кавычки в строке!