Quelle est la différence?
Quelle est la différence?
Réponses:
% w guillemets comme des guillemets simples ''
(pas d'interpolation de variable, moins de séquences d'échappement), tandis que% W entre guillemets comme des guillemets doubles ""
.
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}'
et "\#{foo}"
vous donner la même chaîne, que vous pouvez vérifier avec '#{foo}' == "\#{foo}"
dans irb
.
Bien qu'il s'agisse d'un ancien post, la question ne cesse de se poser et les réponses ne me semblent pas toujours claires. Alors, voici mes pensées.
% w et% W sont des exemples de types d' entrées délimitées générales , qui se rapportent aux tableaux. Il existe d'autres types qui incluent% q,% Q,% r,% x et% i.
La différence entre les majuscules et les minuscules est que cela nous donne accès aux fonctionnalités des guillemets simples et doubles. Avec des guillemets simples et% w minuscules, nous n'avons pas d'interpolation de code (par exemple # {someCode}) et une plage limitée de caractères d'échappement qui fonctionnent (par exemple \, \ n). Avec des guillemets doubles et% en majuscules W nous n'avons accès à ces fonctions.
Le délimiteur utilisé peut être n'importe quel caractère, pas seulement la parenthèse ouverte. Jouez avec les exemples ci-dessus pour voir cela en effet.
Pour une rédaction complète avec des exemples de% w et la liste complète, les caractères d'échappement et les délimiteurs - jetez un œil à: http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed .html
marque
%w&readable af&
Documentation pour les chaînes de pourcentage: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
%W
est utilisé pour les éléments de tableau entre guillemets comme %Q
, par exemple,
foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]
%w
est utilisé pour les éléments de tableau entre guillemets simples comme %q
.
%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]