Ruby arrays: %w vs %W
有什么区别?
%w引号与单引号
1 2 3 4 5 6 | 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找到的应用程序:
1 2 | greetings = %W(hi hello #{"how do you do"}) # => ["hi","hello","how do you do"] |
号
%w执行正常的双引号替换。%W没有。
虽然这是一篇老文章,但问题不断出现,我觉得答案并不总是很清楚。所以,这是我的想法。
%w和%w是与数组相关的常规分隔输入类型的示例。还有其他类型,包括%q、%q、%r、%x和%i。
大小写的区别在于它使我们能够访问单引号和双引号的功能。对于单引号和小写%w,我们没有代码插入(例如somecode)和有限范围的可工作转义字符(例如,)。使用双引号和大写%w,我们确实可以访问这些功能。
使用的分隔符可以是任何字符,而不仅仅是左括号。用上面的例子来看看效果。
有关完整的%w和完整列表示例的撰写,请参阅转义符和分隔符:http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-exploed.html
作记号
百分比字符串文档:http://ruby doc.org/core-2.2.0/doc/syntax/literals_rdoc.html label percent+strings
1 2 | foo ="!" %W{hello world #{foo}} # => ["hello","world","!"] |
1 2 | %w(hello world #{foo}) # => ["hello","world","\#{foo}"] |
。