有什么区别吗?
% W 执行正常的双引号替换。 % w 没有。
% w 引号类似于单引号 ''(没有变量插值,转义序列更少) ,而% 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 vs% w 找到的一个应用程序:
greetings = %W(hi hello #{"how do you do"}) # => ["hi", "hello", "how do you do"]
虽然这是一篇老文章,但问题不断出现,而答案对我来说并不总是那么清晰。我是这么想的。
% w 和% W 是通用分隔输入 类别的例子,它们与数组相关。还有其他类型,包括% q、% Q、% r、% x 和% i。
大写和小写的区别在于,它使我们能够访问单引号和双引号的特征。使用单引号和小写的% w,我们没有代码插值(例如 # { some Code })和有限的转义字符范围(例如 n)。使用双引号和大写% W,我们 做可以访问这些特性。
所使用的分隔符可以是任何字符,而不仅仅是开括号。通过上面的例子可以看到效果。
有关% w 和完整列表的示例、转义字符和分隔符的完整文章,请参阅: http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed.html
马克
百分比字符串文档: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
%W用于双引号数组元素,例如 %Q,
%W
%Q
foo = "!" %W{hello world #{foo}} # => ["hello", "world", "!"]
%w用于单引号数组元素,如 %q。
%w
%q
%w(hello world #{foo}) # => ["hello","world", "\#{foo}"]
array = %w(a b c d)
和你一样
array = ["a", "b", "c", "d"]
%w是一个快捷的符号,用于引号到字符串!