我不明白为什么有些人会在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程序员的首选。
答案 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个字符...无法击败它!