Ruby数组:%w vs%W
有什么不同?
%w引用像单引号''
(无variables插值,更less的转义序列),而%W引号像双引号""
。
irb(main):001:0> foo="hello" => "hello" irb(main):002:0> %W(foo bar baz #{foo}) => ["foo", "bar", "baz", "hello"] irb(main):003:0> %w(foo bar baz #{foo}) => ["foo", "bar", "baz", "\#{foo}"]
我发现的%W和%w的应用程序:
greetings = %W(hi hello #{"how do you do"}) # => ["hi", "hello", "how do you do"]
%W执行正常的双引号replace。 %w没有。
虽然这是一个老post,但问题不断出现,答案并不总是显而易见的。 所以,这是我的想法。
%w和%W是通用分隔inputtypes的示例,与数组有关。 还有其他types,包括%q,%Q,%r,%x和%i。
大小写之间的区别在于它使我们能够访问单引号和双引号的function。 用单引号和小写%w,我们没有代码插入(例如#{someCode})和有效范围的转义字符(例如\,\ n)。 用双引号和大写%W我们可以访问这些function。
使用的分隔符可以是任何字符,而不仅仅是左括号。 玩上面的例子,看看有效。
有关%w和完整列表的示例,转义字符和分隔符的完整写法,请查看: http : //cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed html的
标记
百分比string的文档: http : //ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
%W
用于像%Q
这样的双引号数组元素,例如,
foo = "!" %W{hello world #{foo}} # => ["hello", "world", "!"]
%w
用于像%q
这样的单引号数组元素。
%w(hello world #{foo}) # => ["hello","world", "\#{foo}"]