Existe uma maneira mais limpa de fazer algo assim?
%w[address city state postal country].map(&:to_sym)
#=> [:address, :city, :state, :postal, :country]
Eu teria imaginado %s
que teria feito o que eu queria, mas não faz. Apenas pega tudo entre os colchetes e cria um grande símbolo.
Apenas um pequeno aborrecimento.
Respostas:
A resposta original foi escrita em setembro de 11, mas, a partir do Ruby 2.0 , existe uma maneira mais curta de criar uma matriz de símbolos! Este literal:
fará exatamente o que você quiser.
fonte
%i|a b c|
Com o risco de se tornar literal demais, acho que a maneira mais limpa de construir uma matriz de símbolos é usando uma matriz de símbolos.
Não consigo pensar em nada mais conciso do que isso.
fonte
%i[ ]
Matriz não interpolada de símbolos, separados por espaço em branco (após o Ruby 2.0)%I[ ]
Matriz interpolada de símbolos, separada por espaço em branco (após Ruby 2.0)%i[address city state postal country]
a maneira mais limpa de fazer isso é:
%w[address city state postal country].map(&:to_sym)
fonte