Qual é a diferença?
Qual é a diferença?
Respostas:
% w aspas como aspas simples ''
(sem interpolação variável, menos seqüências de escape), enquanto% W aspas como aspas duplas ""
.
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}"
dar-lhe a mesma corda, que você pode verificar com o '#{foo}' == "\#{foo}"
no irb
.
Embora seja um post antigo, a pergunta continua aparecendo e as respostas nem sempre parecem claras para mim. Então, aqui estão os meus pensamentos.
% w e% W são exemplos de tipos de entrada delimitada geral , relacionados a matrizes. Existem outros tipos que incluem% q,% Q,% r,% x e% i.
A diferença entre maiúsculas e minúsculas é que ela nos dá acesso aos recursos de aspas simples e duplas. Com aspas simples e% w minúsculas, não temos interpolação de código (por exemplo, # {someCode}) e um intervalo limitado de caracteres de escape que funcionam (por exemplo, \, \ n). Com aspas duplas e% maiúscula W que não têm acesso a esses recursos.
O delimitador usado pode ter qualquer caractere, não apenas o parêntese aberto. Brinque com os exemplos acima para ver isso em vigor.
Para uma gravação completa com exemplos de% w e a lista completa, caracteres de escape e delimitadores - consulte: http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed .html
Marca
%w&readable af&
Documentação para sequências de porcentagem: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
%W
é usado para elementos de matriz com aspas duplas %Q
, como , por exemplo,
foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]
%w
é usado para elementos de matriz com aspas simples como %q
.
%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]