Ruby масиви:% w проти% W


152

Яка різниця?


18
"% w" - це моє звичайне відступлення для людей, які занадто зухвало ставляться до читабельності Рубі. Працює кожен раз.
Крейг Стунц

тепер у вас є ще краща відповідь :-)
errata

6
Як невідповідна сторона, URL-адреса цього питання деякий час плутала мене під час завантаження сторінки.
Фонд позову Моніки

Відповіді:


233

% 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}"]

У вашому прикладі також є подвійні лапки для% w. Це правильно?
Фотон

Так. Під час друку випуску Ruby завжди використовує подвійні лапки і уникає символів типу #. '#{foo}'і "\#{foo}"дасть вам ту саму рядок, яку ви можете перевірити '#{foo}' == "\#{foo}"в irb.
Брайан Кемпбелл

Спочатку це мало заплутано, але дякую за пояснення.
Фотон

29

Я знайшов додаток для% W проти% w:

greetings = %W(hi hello #{"how do you do"})
# => ["hi", "hello", "how do you do"]

12
Хоча в цьому випадку це зробити простіше простоgreetings = %w(hi hello how\ do\ you\ do)
діндз


11

Хоча це старе повідомлення, питання все одно виникає, і відповіді мені не завжди здаються зрозумілими. Отже, ось мої думки.

% 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

Позначити


1
Це гарна стаття. Я не усвідомлював, що ти можеш створювати рядки та інші речі так само, і символи, що додаються, можуть бути будь-якими, що ти хочеш. Наприклад,%w&readable af&
Dex


1

%Wвикористовується для елементів масиву з подвійним котируванням %Q, наприклад, наприклад,

foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]

%wвикористовується для елементів з одним котируванням типу %q.

%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]

0
array = %w(a b c d) 

Такий же, як

array = ["a", "b", "c", "d"]

%w - це скорочений символ для лапки до рядка!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.