是否有符号数组的文字符号?

时间:2012-01-11 09:25:53

标签: ruby arrays symbols syntactic-sugar

我喜欢这个字符串数组的文字表达式:

%w( i can easily create arrays of words )

我想知道是否有文字来获取符号数组。我知道我可以做到

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

但是使用文字会非常棒。

2 个答案:

答案 0 :(得分:266)

是的!现在可以在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

答案 1 :(得分:25)

在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