Ruby的常规分隔输入的优点和缺点是什么?(百分比语法)

bq3bfh9z  于 2023-03-08  发布在  Ruby
关注(0)|答案(4)|浏览(90)

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

dw1jzc5e

dw1jzc5e1#

一般分隔输入(如调用%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:极简主义并不是一种核心价值观,而仅仅是众多竞争设计力量中的一种。

llycmphe

llycmphe2#

很容易记住:%w{}用于“单词”,%r{}用于regexp,%q{}用于“引号”,等等......一旦您构建了这样的记忆辅助工具,就非常容易了。

dgiusagp

dgiusagp3#

%w语法将列表中的每个项目去掉3个字符......这是最好的!

(来源:typepad.com

weylhg0b

weylhg0b4#

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

相关问题