符号数组有文字符号吗?

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

%w( i can easily create arrays of words )

我想知道是否有一个文字得到一个符号数组。我知道我可以做到

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

但是如果能用字面意思就太好了。

43621 次浏览

不幸的是,在 Ruby 1.x 中,可用的 %-分隔符列表是有限的

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

是的! 这在 Ruby2.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