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

bra*_*rad 9 ruby syntax

我不明白为什么有些人会在ruby中使用百分比语法.

例如,我正在阅读ruby插件指南,它使用如下代码:

%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
Run Code Online (Sandbox Code Playgroud)

每当我看到这样的东西时,我都要去查找百分比语法参考,因为我不记得%w的含义.

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

我认为在后一种情况下,我更清楚的是我已经定义了一个字符串数组,但在前者中 - 特别是对于学习红宝石的人 - 它似乎并不那么清楚,至少对我而言.

如果有人可以告诉我,我在这里遗漏了一些关键点,那么请这样做,因为我很难理解为什么百分比语法似乎是绝大多数ruby程序员的首选.

Way*_*rad 15

一般用于一般分隔输入(如调用%w,%r等)以避免必须转义分隔符.这使得它对于具有嵌入分隔符的文字特别有用.对比正则表达式

  /^\/home\/[^\/]+\/.myprogram\/config$/
Run Code Online (Sandbox Code Playgroud)

  %r|^/home/[^/]+/.myprogram/config$|
Run Code Online (Sandbox Code Playgroud)

或者字符串

  "I thought John's dog was called \"Spot,\" not \"Fido.\""
Run Code Online (Sandbox Code Playgroud)

  %Q{I thought John's dog was called "Spot," not "Fido."}
Run Code Online (Sandbox Code Playgroud)

当你阅读更多Ruby时,一般分隔输入(%w,%r,&c.)的含义,以及Ruby的其他特性和习语,将变得清晰.


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