Dan*_*nor 811 ruby arrays string notation
我正在查看FileUtils的文档.我对以下几行感到困惑:
FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
Run Code Online (Sandbox Code Playgroud)
什么%w意思?你能指点我的文件吗?
sep*_*p2k 1205
%w(foo bar)是一个快捷方式["foo", "bar"].这意味着它是一种表示字符串数组的符号,这些字符串由空格而不是逗号分隔,并且没有引号.您可以在zenspider的quickref中找到编写文字的方法列表.
Mik*_*use 453
我认为它%w()是一个"单词数组" - 元素由空格分隔,它返回一个字符串数组.
还有其他%文字:
%r() 是编写正则表达式的另一种方法.%q() 是另一种编写单引号字符串的方法(可以是多行的,这很有用)%Q() 给出一个双引号字符串%x() 是一个shell命令%i() 给出一个符号数组(Ruby> = 2.0.0)%s()变成foo一个符号(:foo)我不认识任何人,但可能有一些潜伏在那里......
Era*_*den 59
还%s允许您创建任何符号,例如:
%s|some words| #Same as :'some words'
%s[other words] #Same as :'other words'
%s_last example_ #Same as :'last example'
Run Code Online (Sandbox Code Playgroud)
从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...
Run Code Online (Sandbox Code Playgroud)
小智 20
虽然这是一个老帖子,但问题仍然存在,而且答案对我来说并不总是很清楚,所以,这是我的想法:
%w并且%W是与数组相关的常规分隔输入类型的示例.还有其他类型,包括%q,%Q,%r,%x和%i.
大写和小写版本之间的区别在于它使我们能够访问单引号和双引号的功能.使用单引号和(小写)%w,我们没有代码插值(#{someCode})和有限范围的工作(\\,\n)的转义字符.用双引号和(大写)%W,我们就可以使用这些功能.
使用的分隔符可以是任何字符,而不仅仅是左括号.播放上面的示例,看看它是否有效.
有关%w完整列表和完整列表,转义字符和分隔符的完整记录,请查看" Ruby - %w vs%W - 揭示的秘密! "
Raj*_*hra 14
而不是%w()我们应该使用%w[]
根据Ruby风格指南:
当你需要一个单词数组(非空字符串,没有空格和特殊字符)时,首选%w到文字数组语法.仅将此规则应用于具有两个或更多元素的数组.
# bad
STATES = ['draft', 'open', 'closed']
# good
STATES = %w[draft open closed]
Run Code Online (Sandbox Code Playgroud)
使用最适合各种百分比文字的大括号.
[]对于数组文字(%w, %i, %W, %I),因为它与标准数组文字对齐.
# bad
%w(one two three)
%i(one two three)
# good
%w[one two three]
%i[one two three]
Run Code Online (Sandbox Code Playgroud)
更多阅读这里.
its*_*lay 11
摘自http://ruby-doc.org/core/doc/syntax/literals_rdoc.html#label-Percent+Strings上 Percent Strings的文档:
除了创建String的%(...)之外,%可以创建其他类型的对象.与字符串一样,大写字母允许插值和转义字符,而小写字母禁用它们.
这些是ruby中字符串百分比的类型:
...
%w:字符串数组