Ruby的一般分隔输入的优缺点是什么? (语法百分比)

时间:2010-02-14 05:25:09

标签: ruby syntax

我不明白为什么有些人会在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程序员的首选。

4 个答案:

答案 0 :(得分:15)

一般用于一般分隔输入(如调用%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,&amp; c。)的含义,以及Ruby的其他特性和习语,将变得简单。


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

答案 1 :(得分:3)

很容易记住:%w{}用于“单词”,%r{}表示正则表达式,%q{}表示“引号”,等等......一旦你构建了这样的话,这很容易记忆辅助工具。

答案 2 :(得分:2)

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

答案 3 :(得分:2)

%w语法为列表中的每个项目削减了3个字符...无法击败它!

alt text