【发布时间】:2010-10-16 00:04:17
【问题描述】:
有什么区别?
【问题讨论】:
-
"%w" 是我对那些对 Ruby 的可读性有点过于自大的人通常的反驳。每次都有效。
-
现在你的反应更好了 :-)
-
作为一个无关紧要的旁注,这个问题的 URL 在页面加载时让我困惑了一段时间。
有什么区别?
【问题讨论】:
%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}"]
【讨论】:
#。 '#{foo}' 和 "\#{foo}" 为您提供相同的字符串,您可以使用 irb 中的 '#{foo}' == "\#{foo}" 进行验证。
我为 %W 与 %w 找到的应用程序:
greetings = %W(hi hello #{"how do you do"})
# => ["hi", "hello", "how do you do"]
【讨论】:
greetings = %w(hi hello how\ do\ you\ do)
%W 执行正常的双引号替换。 %w 没有。
【讨论】:
虽然是一篇旧帖子,但问题不断出现,而答案对我来说似乎并不总是很清楚。所以,这是我的想法。
%w 和 %W 是与数组相关的通用分隔输入类型的示例。还有其他类型,包括 %q、%Q、%r、%x 和 %i。
大写和小写的区别在于它让我们可以访问单引号和双引号的功能。使用单引号和小写 %w,我们没有代码插值(例如 #{someCode} )和有限范围的转义字符(例如 \、\n )。通过双引号和大写 %W,我们确实可以访问这些功能。
使用的分隔符可以是任何字符,而不仅仅是左括号。试玩上面的例子,看看效果如何。
如需完整的 %w 示例和完整列表、转义字符和分隔符,请查看:http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed.html
标记
【讨论】:
%w&readable af&
%W 用于双引号数组元素,例如%Q,
foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]
%w 用于像%q 这样的单引号数组元素。
%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]
【讨论】:
array = %w(a b c d)
相同
array = ["a", "b", "c", "d"]
%w是字符串引号的快捷符号!
【讨论】: