我在看FileUtils的文档。
我被下面这句话弄糊涂了:
FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
%w是什么意思?你能给我指一下文件吗?
我在看FileUtils的文档。
我被下面这句话弄糊涂了:
FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
%w是什么意思?你能给我指一下文件吗?
当前回答
我们应该使用%w[]而不是%w()
根据Ruby风格指南:
当需要单词数组(其中没有空格和特殊字符的非空字符串)时,建议使用%w而不是文字数组语法。此规则仅适用于包含两个或多个元素的数组。
# bad
STATES = ['draft', 'open', 'closed']
# good
STATES = %w[draft open closed]
使用最适合各种百分比字面量的大括号。
[]用于数组字面量(%w, %i, %w, %i),因为它与标准数组字面量对齐。
# bad
%w(one two three)
%i(one two three)
# good
%w[one two three]
%i[one two three]
更多信息请点击这里阅读。
其他回答
我认为%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"]
节选自http://ruby-doc.org/core/doc/syntax/literals_rdoc.html#label-Percent+Strings:上的Percent Strings文档
除了创建String类型的%(…),%还可以创建其他类型的对象。与字符串一样,大写字母允许插补和转义字符,而小写字母禁止它们。 这些是ruby中百分比字符串的类型: ... %w:字符串数组
%W和%W允许您在不使用引号和逗号的情况下创建字符串数组。
我们应该使用%w[]而不是%w()
根据Ruby风格指南:
当需要单词数组(其中没有空格和特殊字符的非空字符串)时,建议使用%w而不是文字数组语法。此规则仅适用于包含两个或多个元素的数组。
# bad
STATES = ['draft', 'open', 'closed']
# good
STATES = %w[draft open closed]
使用最适合各种百分比字面量的大括号。
[]用于数组字面量(%w, %i, %w, %i),因为它与标准数组字面量对齐。
# 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")
这突出显示%()创建了一个像“Porter Smith\nJimmyJones\nRonald Jackson”这样的字符串,为了得到数组,您将“\n”[“Porter Smith”,“JimmyJones”,“Ronald Jackson”]分开字符串
因此,为了回答OP的原始问题,他们也可以写%(cgi\ spaeinfilename.rb;complex.rb;date.rb).split(';'),如果你想在最终数组输出中存在空格,而恰巧有空格。