Qual è la differenza?
Qual è la differenza?
Risposte:
Le virgolette% w come virgolette singole ''
(nessuna interpolazione variabile, meno sequenze di escape), mentre le virgolette% W come virgolette doppie ""
.
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}'
e "\#{foo}"
ti dà la stessa stringa, che puoi verificare con '#{foo}' == "\#{foo}"
in irb
.
Sebbene sia un vecchio post, la domanda continua a sorgere e le risposte non mi sembrano sempre chiare. Quindi, ecco i miei pensieri.
% w e% W sono esempi di tipi di input delimitati generali relativi alle matrici. Esistono altri tipi che includono% q,% Q,% r,% xe% i.
La differenza tra maiuscole e minuscole è che ci consente di accedere alle funzionalità di virgoletta singola e doppia. Con virgolette singole e% w minuscola, non abbiamo interpolazione di codice (ad esempio # {someCode}) e un intervallo limitato di caratteri di escape che funzionano (ad esempio \, \ n). Con doppie virgolette e% W maiuscola lo facciamo abbiamo accesso a queste funzionalità.
Il delimitatore utilizzato può essere qualsiasi carattere, non solo la parentesi aperta. Gioca con gli esempi sopra per vederlo in effetti.
Per un resoconto completo con esempi di% w e l'elenco completo, caratteri di escape e delimitatori - dai un'occhiata a: http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed .html
marchio
%w&readable af&
Documentazione per stringhe percentuali: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
%W
viene utilizzato per elementi di array tra virgolette come %Q
, ad esempio,
foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]
%w
viene utilizzato per elementi di array a virgoletta singola come %q
.
%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]