我在看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是通用分隔输入类型的例子,与数组有关。还有其他类型包括%q, %q, %r, %x和%i。
大写和小写版本的区别在于,它允许我们访问单引号和双引号的特性。使用单引号和(小写)%w,我们没有代码插值(#{someCode})和有限范围的转义字符(\\,\n)。使用双引号和(大写)%W,我们可以访问这些特性。
所使用的分隔符可以是任何字符,而不仅仅是开括号。试试上面的例子,看看效果如何。
关于%w和完整列表、转义字符和分隔符的完整示例,请参阅“Ruby - %w vs %w - secrets revealed!”
我们应该使用%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]
更多信息请点击这里阅读。
还有%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(foo bar)是["foo", "bar"]的快捷键。这意味着它是一种用空格而不是逗号分隔的字符串数组的符号,并且它们周围没有引号。你可以在zenspider的quickref中找到一系列书写文字的方法。
%W和%W允许您在不使用引号和逗号的情况下创建字符串数组。