代码之家  ›  专栏  ›  技术社区  ›  brad

Ruby的一般定界输入有哪些优点和缺点?(百分比语法)

  •  9
  • brad  · 技术社区  · 14 年前

    我不明白为什么有些人在Ruby中经常使用百分比语法。

    例如,我正在阅读 ruby plugin guide 它使用如下代码:

    %w{ models controllers }.each do |dir|
      path = File.join(File.dirname(__FILE__), 'app', dir)
      $LOAD_PATH << path
      ActiveSupport::Dependencies.load_paths << path
      ActiveSupport::Dependencies.load_once_paths.delete(path)
    end
    

    每次我看到这样的东西,我都要去查找百分比语法引用,因为我不记得%w的意思。

    这种语法真的比 ["models", "controllers"].each ... ?

    我认为在后一种情况下,更清楚的是我定义了一个字符串数组,但是在前一种情况下,尤其是对学习Ruby的人来说,它看起来不那么清楚,至少对我来说。

    如果有人告诉我这里缺少了一些关键点,那么请这样做,因为我很难理解为什么大多数Ruby程序员似乎更喜欢使用百分比语法。

    4 回复  |  直到 14 年前
        1
  •  15
  •   Wayne Conrad    14 年前

    对于常规分隔输入(如调用%w和%r等)的一个很好的用途是避免必须转义分隔符。这使得它特别适合带有嵌入定界符的文本。对比正则表达式

      /^\/home\/[^\/]+\/.myprogram\/config$/
    

    具有

      %r|^/home/[^/]+/.myprogram/config$|
    

    或者绳子

      "I thought John's dog was called \"Spot,\" not \"Fido.\""
    

    具有

      %Q{I thought John's dog was called "Spot," not "Fido."}
    

    当您阅读更多Ruby时,通用定界输入的含义(%w,%r,&c.)以及Ruby的其他特性和习惯用法将变得简单明了。


    我相信Ruby经常有几种方法来做同样的事情并不是偶然的。Ruby和Perl一样,似乎是 postmodern language :极简主义不是核心价值观,只是众多竞争设计力量中的一种。

        2
  •  3
  •   hurikhan77    14 年前

    很容易记住: %w{} 是“词”, %r{} 对于regexps, %q{} 对于“引号”,等等…一旦你建立了这样的记忆辅助系统,就很容易了。

        3
  •  2
  •   Bill the Lizard Alexis MP    14 年前

    随着数组大小的增加, %w 语法通过不输入所有引号和逗号来保存越来越多的击键。至少这就是 Learning Ruby .

        4
  •  2
  •   Community T.Woody    7 年前

    %w syntax从列表中的每个项目中删除3个字符…不能打败它!

    alt text