我在看FileUtils的文档。

我被下面这句话弄糊涂了:

FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'

%w是什么意思?你能给我指一下文件吗?


当前回答

我认为%w()是一个“单词数组”——元素由空格分隔,它返回一个字符串数组。

这里是所有的%字面量:

%w()字符串数组 %r()正则表达式。 % q()字符串 %x()一个shell命令(返回输出字符串) %i()符号数组(Ruby >= 2.0.0) % s()符号 %()(不带字母)%Q()的快捷方式

分隔符(and)可以用许多变体替换,如[and]、|、!等等。

当使用大写字母%W()时,您可以使用字符串插值#{variable},类似于“和”字符串分隔符。此规则也适用于所有其他%字面量。

abc = 'a b c'
%w[1 2#{abc} d] #=> ["1", "2\#{abc}", "d"]
%W[1 2#{abc} d] #=> ["1", "2a b c", "d"]

其他回答

%w(foo bar)是["foo", "bar"]的快捷键。这意味着它是一种用空格而不是逗号分隔的字符串数组的符号,并且它们周围没有引号。你可以在zenspider的quickref中找到一系列书写文字的方法。

还有%s允许您创建任何符号,例如:

%s|some words|          #Same as :'some words'
%s[other words]         #Same as :'other words'
%s_last example_        #Same as :'last example'

自从Ruby 2.0.0以来,你还拥有:

%i( a b c )   # => [ :a, :b, :c ]
%i[ a b c ]   # => [ :a, :b, :c ]
%i_ a b c _   # => [ :a, :b, :c ]
# etc...

%W和%W允许您在不使用引号和逗号的情况下创建字符串数组。

节选自http://ruby-doc.org/core/doc/syntax/literals_rdoc.html#label-Percent+Strings:上的Percent Strings文档

除了创建String类型的%(…),%还可以创建其他类型的对象。与字符串一样,大写字母允许插补和转义字符,而小写字母禁止它们。 这些是ruby中百分比字符串的类型: ... %w:字符串数组

我认为%w()是一个“单词数组”——元素由空格分隔,它返回一个字符串数组。

这里是所有的%字面量:

%w()字符串数组 %r()正则表达式。 % q()字符串 %x()一个shell命令(返回输出字符串) %i()符号数组(Ruby >= 2.0.0) % s()符号 %()(不带字母)%Q()的快捷方式

分隔符(and)可以用许多变体替换,如[and]、|、!等等。

当使用大写字母%W()时,您可以使用字符串插值#{variable},类似于“和”字符串分隔符。此规则也适用于所有其他%字面量。

abc = 'a b c'
%w[1 2#{abc} d] #=> ["1", "2\#{abc}", "d"]
%W[1 2#{abc} d] #=> ["1", "2a b c", "d"]