¿Cuál es la diferencia?
¿Cuál es la diferencia?
Respuestas:
% w se cita como comillas simples ''
(sin interpolación variable, menos secuencias de escape), mientras que% W se cita como comillas dobles ""
.
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}'
y "\#{foo}"
darle la misma cadena, que puede verificar con '#{foo}' == "\#{foo}"
en irb
.
Aunque es una publicación antigua, la pregunta sigue apareciendo y las respuestas no siempre me parecen claras. Entonces, aquí están mis pensamientos.
% w y% W son ejemplos de tipos de entrada delimitados generales , que se relacionan con matrices. Hay otros tipos que incluyen% q,% Q,% r,% x y% i.
La diferencia entre mayúsculas y minúsculas es que nos da acceso a las características de comillas simples y dobles. Con comillas simples y minúsculas% w, no tenemos interpolación de código (por ejemplo, # {someCode}) y un rango limitado de caracteres de escape que funcionan (por ejemplo, \, \ n). Con comillas dobles y mayúsculas% W que sí tienen acceso a estas características.
El delimitador utilizado puede ser cualquier carácter, no solo el paréntesis abierto. Juega con los ejemplos anteriores para ver eso en efecto.
Para una redacción completa con ejemplos de% w y la lista completa, caracteres de escape y delimitadores, eche un vistazo a: http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed .html
marca
%w&readable af&
Documentación para cadenas de porcentaje: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
%W
se usa para elementos de matriz con comillas dobles como %Q
, por ejemplo,
foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]
%w
se usa para elementos de matriz con comillas simples como %q
.
%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]