【问题标题】:Ruby arrays: %w vs %WRuby 数组:%w 与 %W
【发布时间】:2010-10-16 00:04:17
【问题描述】:

有什么区别?

【问题讨论】:

  • "%w" 是我对那些对 Ruby 的可读性有点过于自大的人通常的反驳。每次都有效。
  • 现在你的反应更好了 :-)
  • 作为一个无关紧要的旁注,这个问题的 URL 在页面加载时让我困惑了一段时间。

标签: ruby arrays


【解决方案1】:

%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 的双引号。对吗?
  • 是的。打印输出时,Ruby 总是使用双引号并转义字符,例如#'#{foo}'"\#{foo}" 为您提供相同的字符串,您可以使用 irb 中的 '#{foo}' == "\#{foo}" 进行验证。
  • 第一次看到有点混乱,但感谢您的解释。
【解决方案2】:

我为 %W 与 %w 找到的应用程序:

greetings = %W(hi hello #{"how do you do"})
# => ["hi", "hello", "how do you do"]

【讨论】:

  • 虽然在这种情况下,只做greetings = %w(hi hello how\ do\ you\ do)
【解决方案3】:

%W 执行正常的双引号替换。 %w 没有。

【讨论】:

    【解决方案4】:

    虽然是一篇旧帖子,但问题不断出现,而答案对我来说似乎并不总是很清楚。所以,这是我的想法。

    %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&
    【解决方案5】:
    【解决方案6】:

    %W 用于双引号数组元素,例如%Q

    foo = "!"
    %W{hello world #{foo}} # => ["hello", "world", "!"]
    

    %w 用于像%q 这样的单引号数组元素。

    %w(hello world #{foo})
    # => ["hello","world", "\#{foo}"]
    

    【讨论】:

      【解决方案7】:
      array = %w(a b c d) 
      

      相同

      array = ["a", "b", "c", "d"]
      

      %w是字符串引号的快捷符号!

      【讨论】:

        猜你喜欢
        • 2012-12-05
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 2012-06-26
        • 1970-01-01
        • 1970-01-01
        • 2021-03-27
        相关资源
        最近更新 更多