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}"]