%w(数组)是什么意思?

我正在查看FileUtils的文档。 我很困惑以下行:

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

%w是什么意思? 你能指点我的文档吗?

%w(foo bar)["foo", "bar"]的快捷方式。 这意味着写一个由空格分隔的string数组而不是逗号,并且不用逗号。 你可以在zenspider的quickref中find写文字的方法列表。

我认为%w()是一个“字数组” – 元素由空格分隔。

还有其他的%文字:

  • %r()是编写正则expression式的另一种方法。
  • %q()是另一种编写单引号string的方法(可以是多行的,这很有用)
  • %Q()给出一个双引号的string
  • %x()是一个shell命令
  • %i()给出一个符号数组(Ruby> = 2.0.0)
  • %s()foo变成一个符号( :foo

我不认识任何人,但可能有潜伏在那里的一些…

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

 %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( abc ) # => [ :a, :b, :c ] %i[ abc ] # => [ :a, :b, :c ] %i_ abc _ # => [ :a, :b, :c ] # etc... 

%W%w允许你创build一个不使用引号和逗号的string数组。

虽然这是一个老post,但问题不断出现,答案并不总是显而易见,所以,这是我的想法:

%w%W是通用分隔inputtypes的示例,涉及到数组。 还有其他types,包括%q%Q%r%x%i

大小写版本之间的区别是,它使我们能够访问单引号和双引号的function。 使用单引号和(小写) %w ,我们没有代码插入( #{someCode} )和有效范围的转义字符( \\\n )。 用双引号和(大写) %W我们可以访问这些function。

使用的分隔符可以是任何字符,而不仅仅是左括号。 玩上面的例子,看看有效。

有关%w和完整列表的示例,转义字符和分隔符的完整写法,请查看“ Ruby – %w%W – 揭示的秘密!

摘自http://ruby-doc.org/core/doc/syntax/literals_rdoc.html#label-Percent+Strings的百分比string的文档:;

除了创buildString的%(…)之外,%可以创build其他types的对象。 与string一样,大写字母允许插值和转义字符,而小写字母则禁用它们。

这些是ruby中string百分比的types:

%w :string数组

而不是%w()我们应该使用%w[]

根据Ruby风格指南:

当你需要一个单词数组(非空string不含空格和特殊字符)时,首选%w作为字面数组语法。 仅将此规则应用于具有两个或更多元素的数组。

 # bad STATES = ['draft', 'open', 'closed'] # good STATES = %w[draft open closed] 

使用最适合各种文字百分比的大括号。

[]为数组文字( %w, %i, %W, %I ),因为它与标准数组文字alignment。

 # bad %w(one two three) %i(one two three) # good %w[one two three] %i[one two three] 

更多这里阅读。

我从CSV电子表格中得到了一大堆用户全名的列,我需要用空格来保存格式。 我发现让他们在使用ruby的最简单的方法是:

 names = %( Porter Smith Jimmy Jones Ronald Jackson).split('\n') 

这强调了%()创build了一个string,如"Porter Smith\nJimmyJones\nRonald Jackson"并得到数组将stringsplit"\n" ["Porter Smith", "Jimmy Jones", "Ronald Jackson"]

因此,为了回答OP的原始问题,他们可能写了%(cgi\ spaeinfilename.rb;complex.rb;date.rb).split(';')如果碰巧存在space最终的数组输出。