Яка різниця?
Яка різниця?
Відповіді:
% 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}"]
#
. '#{foo}'
і "\#{foo}"
дасть вам ту саму рядок, яку ви можете перевірити '#{foo}' == "\#{foo}"
в irb
.
Хоча це старе повідомлення, питання все одно виникає, і відповіді мені не завжди здаються зрозумілими. Отже, ось мої думки.
% w і% W - приклади загальних типів розділеного вводу , що стосуються масивів. Є й інші типи, які включають% q,% Q,% r,% x та% i.
Відмінність верхнього та нижнього регістру полягає в тому, що це дає нам доступ до особливостей одинарної та подвійної цитат. З одинарними котируваннями і малі% w, ми не маємо інтерполяції коду (наприклад, # {someCode}) та обмеженого кола символів, які працюють (наприклад, \, \ n). З подвійними лапками і великими% W ми дійсно маємо доступ до цих функцій.
Використовуваний роздільник може бути будь-яким символом, а не лише відкритими дужками. Пограйте з наведеними вище прикладами, щоб побачити це по суті.
Для повного запису із прикладами% w та повного списку, символів і розділових знаків - подивіться на сторінку: 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
, наприклад, наприклад,
foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]
%w
використовується для елементів з одним котируванням типу %q
.
%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]