%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
最终的数组输出。