¿Hay una forma más limpia de hacer algo como esto?
%w[address city state postal country].map(&:to_sym)
#=> [:address, :city, :state, :postal, :country]
Me habría imaginado %s
que habría hecho lo que quería, pero no lo hace. Simplemente toma todo entre los corchetes y lo convierte en un gran símbolo.
Solo una molestia menor.
Respuestas:
La respuesta original se escribió en septiembre del '11, pero, a partir de Ruby 2.0 , ¡hay una forma más corta de crear una serie de símbolos! Este literal:
Hará exactamente lo que quieras.
fuente
%i|a b c|
Con el riesgo de volverse demasiado literal, creo que la forma más limpia de construir una matriz de símbolos es usar una matriz de símbolos.
No se me ocurre nada más conciso que eso.
fuente
%i[ ]
Matriz de símbolos no interpolada, separados por espacios en blanco (después de Ruby 2.0)%I[ ]
Matriz de símbolos interpolada, separados por espacios en blanco (después de Ruby 2.0)%i[address city state postal country]
La forma más limpia de hacer esto es:
%w[address city state postal country].map(&:to_sym)
fuente