2

我通过 rubocop 运行我的代码。它有一个规则: %w或者%W对于一个单词数组。

%w(some words here)   
['some', 'words', 'here']

为什么要%w受到青睐['some', 'words', 'here']?两者似乎是平等的。只是打字少了,还是我们为了混淆而试图变得神秘?

4

4 回答 4

6

出于三个原因:

  1. %w 是更惯用的红宝石

在阅读 ruby​​ 代码时,您会在处理字符串数组时遇到 %wa 很多。虽然您可以编写一个简单的 [] 并实现相同的目的,但 %w 是“红宝石方式”。

  1. %w 比 [] 传达更多的含义

第二个我认为更重要的原因是 %w 传达了更具体的含义。使用 %w 创建的数组只能保存字符串,例如不能保存整数。所以代码通过指出这个数组永远只有字符串,向程序员更清楚地展示了它的意图。

  1. Ruby 哲学:做一件事的多种方式。

Ruby 有一种哲学(正确或错误),即语言应该为程序员提供多种选择来做同样的事情,这样他们就可以做他们认为正确的事情。因此,如果您不同意规则,那没关系 :) 这是对 Ruby Yukihiro Matsumoto的创建者的采访片段

Ruby 继承了 Perl 的哲学,即有不止一种方法来做同样的事情。我从拉里沃尔那里继承了这一理念,他实际上是我的英雄。我想让 Ruby 用户免费。我想给他们选择的自由。人不一样。人们选择不同的标准。但是,如果在许多替代方案中有更好的方法,我想通过让它舒适来鼓励这种方法。所以这就是我试图做的。也许 Python 代码更具可读性。每个人都可以编写相同风格的 Python 代码,这样可能更容易阅读。但是一个人与另一个人之间的差异是如此之大,我认为即使你使用 Python,只提供一种方式也没什么帮助。如果可能的话,我宁愿提供很多方式,但如果可能的话,鼓励或引导用户选择更好的方式。- 松本幸弘 2003http://www.artima.com/intv/rubyP.html

于 2016-03-22T18:16:47.877 回答
6

如果您不熟悉快捷方式,它只会“神秘”。

我从来不相信它值得强制执行,但是如果你这样做的话,你可以关闭这个特定的警告,而不用担心它。

语法实际上更干净:

%w(some words here)
于 2016-03-22T18:20:19.370 回答
3

是的,它(部分是因为)更少的打字。但不仅如此。更少的打字通常意味着更少的阅读;它更容易阅读。它不是试图变得神秘,而是相反。此外,随着数组变长,使用的优势和诱惑也%w越来越大,根据数组的长度使用不同的符号会比较神秘。

于 2016-03-22T18:14:18.703 回答
2

它实际上:

%w(some words here)

没有逗号。您可以使用任何匹配的“(”、“[”、“{”、“<”来将它们括起来。

它与方法定义的可选括号相同。更好的可读性。只要您知道它的用途,就不会神秘。

有关更多信息,请参阅Ruby 文档

于 2016-03-22T18:31:30.393 回答