ruby - tipos - ¿Hay una notación literal para una serie de símbolos?
tipos de variables en ruby (2)
Me gusta esta expresión literal para una serie de cadenas:
%w( i can easily create arrays of words )
Me pregunto si hay un literal para obtener una serie de símbolos. Sé que puedo hacer
%w( it is less elegant to create arrays of symbols ).map( &:to_sym )
pero sería tan maravilloso solo usar un literal.
¡Sí! Esto es posible ahora en Ruby 2.0.0. Una forma de escribirlo es:
%i{foo bar} # => [:foo, :bar]
También puede usar otros delimitadores, por lo que también puede escribir %i(foo bar)
o %i!foo bar!
por ejemplo.
Esta característica fue anunciada originalmente aquí:
http://www.ruby-lang.org/zh_TW/news/2012/11/02/ruby-2-0-0-preview1-released/
Se menciona en la documentación oficial de Ruby aquí:
http://ruby-doc.org/core/doc/syntax/literals_rdoc.html#label-Percent+Strings
En Ruby 1.x, desafortunadamente la lista de %-delimiters disponibles es limitada
Modifier Meaning
%q[ ] Non-interpolated String (except for // /[ and /])
%Q[ ] Interpolated String (default)
%r[ ] Interpolated Regexp (flags can appear after the closing delimiter)
%s[ ] Non-interpolated Symbol
%w[ ] Non-interpolated Array of words, separated by whitespace
%W[ ] Interpolated Array of words, separated by whitespace
%x[ ] Interpolated shell command