web-dev-qa-db-ja.com

シンボルの配列にリテラル表記はありますか?

文字列の配列に対するこのリテラル式が好きです:

%w( i can easily create arrays of words )

シンボルの配列を取得するリテラルがあるかどうか疑問に思っています。できるとわかっている

%w( it is less elegant to create arrays of symbols ).map( &:to_sym )

しかし、リテラルを使用するだけでもとても素晴らしいでしょう。

164
m_x

はい!これはRuby 2.0.0で可能になりました。それを書く一つの方法は:

_%i{foo bar}  # => [:foo, :bar]
_

他の区切り文字を使用することもできるため、たとえば%i(foo bar)または_%i!foo bar!_と書くこともできます。

この機能は最初にここで発表されました:

http://www.Ruby-lang.org/zh_TW/news/2012/11/02/Ruby-2-0-0-preview1-released/

Rubyここの公式ドキュメントに記載されています:

http://Ruby-doc.org/core/doc/syntax/literals_rdoc.html#label-Percent+Strings

268
David Grayson

Ruby 1.x、残念ながら利用可能な %-delimiters のリストは制限されています

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
25
Gareth