我不明白为什么有些人在ruby中大量使用percentage语法。
例如,我正在阅读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
每次我看到这样的东西,我都必须去查找percentage语法参考,因为我不记得%w是什么意思。
这种语法真的比["models", "controllers"].each ...
更好吗?
我认为在后一种情况下,我定义了一个字符串数组会更清楚,但在前一种情况下--特别是对学习ruby的人来说--它似乎不那么清楚,至少对我来说是这样。
如果有人能告诉我我错过了一些关键点,那么请告诉我,因为我很难理解为什么percent语法似乎是绝大多数ruby程序员的首选。
4条答案
按热度按时间dw1jzc5e1#
一般分隔输入(如调用%w、%r等)的一个很好的用法是避免转义分隔符。这使得它特别适合于带有嵌入分隔符的文字。
与
或字符串
与
随着您对Ruby的深入了解,一般分隔输入(%w、%r和c.)以及Ruby的其他特性和习惯用法的含义就会变得很清楚。
我相信Ruby经常有几种方法来做同样的事情并不是偶然的,Ruby和Perl一样,看起来是postmodern language:极简主义并不是一种核心价值观,而仅仅是众多竞争设计力量中的一种。
llycmphe2#
很容易记住:
%w{}
用于“单词”,%r{}
用于regexp,%q{}
用于“引号”,等等......一旦您构建了这样的记忆辅助工具,就非常容易了。dgiusagp3#
%w
语法将列表中的每个项目去掉3个字符......这是最好的!(来源:typepad.com)
weylhg0b4#
随着数组大小的增长,
%w
语法通过不输入所有的引号和逗号来节省越来越多的击键次数,至少Learning Ruby给出了这个原因。