为什么在['foo','bar']中偏向使用%w

te

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

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

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

汤姆

出于以下三个原因:

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

读取红宝石代码时,处理字符串数组时会遇到%wa的问题。虽然您可以编写简单的[]并实现相同的功能,但%w是“红宝石”方式。

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

第二点,我认为更重要的原因是%w传达了更具体的含义。用%w创建的数组只能保存字符串,例如不能保存整数。因此,代码指出了该数组将仅包含字符串,从而向程序员展示了其意图的清晰性。

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

Ruby有一种哲学(正确或错误),即该语言应为程序员提供多种选择来执行相同的操作,以便他们可以执行自己认为正确的事情。因此,如果您不同意ok的规则,则:)以下是Ruby Ruby创始人Yukihiro Matsumoto的采访中的摘录

Ruby继承了Perl的哲学,即拥有不止一种方法来做同一件事。我继承了拉里·沃尔(Larry Wall)的哲学,而拉里·沃尔(Larry Wall)实际上是我的英雄。我想让Ruby用户免费。我想给他们选择的自由。人是不同的。人们选择不同的标准。但是,如果在许多替代方法中有更好的方法,我想通过使其舒适来鼓励这种方法。这就是我试图做的。也许Python代码更具可读性。每个人都可以编写相同样式的Python代码,因此它可能更易于阅读。但是,一个人与另一个人的区别是如此之大,我认为即使仅使用Python,仅提供一种方法也无济于事。如果可能的话,我宁愿提供许多方法,但是如果可能的话,我鼓励或指导用户选择一种更好的方法。-松本行弘(2003)http://www.artima.com/intv/rubyP.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么foo = bar与foo = bar不同?

来自分类Dev

为什么使用Foo [T <:Bar]要求Foo [_ <:Bar]而不是Foo [_]

来自分类Dev

python中装饰器中的foo=bar(foo)和something=bar(foo)有什么区别?

来自分类Dev

为什么不要求在赋值`foo = $ bar`中双引号`$ bar`?

来自分类Dev

Scala中的s“ foo $ bar”和“ foo%s” .format(bar)有什么区别

来自分类Dev

在PHP中,当类不存在时,为什么\ Foo \ Bar :: class不会生成错误?

来自分类Dev

为什么FOO = bar; 将变量导出到我的环境中

来自分类Dev

为什么是“ Foo f(Bar());” 可以是采用Bar类型并返回Foo类型的函数的声明?

来自分类Dev

foo =“ bar”; if(foo ==“ bar”){doX(); }其他{“但是这总是运行”}为什么?

来自分类Dev

在bar :: foo`的内部使用`foo`吗?

来自分类Dev

指针分配“ * foo ++ = * bar ++;”在C中做什么?

来自分类Dev

BigQuery中的ARRAY_AGG(foo where bar)等价于什么?

来自分类Dev

指针分配“ * foo ++ = * bar ++;”在C中做什么?

来自分类Dev

在Groovy中,“ foo?.bar”是什么意思?

来自分类Dev

域foo.bar指向127.0.53.53-为什么?

来自分类Dev

Elixir中的“%w(foo,bar)”构造

来自分类Dev

为什么grep 不匹配单词边界处的正斜杠(例如`import baz from './foo/bar/baz';` 中的`/baz`)?

来自分类Dev

$ foo [bar]和$ foo ['bar']在php中的区别

来自分类Dev

js中的“ foo.bar”和“ foo ['bar']”之间的区别

来自分类Dev

bash中的“ foo && bar || baz”与“ if foo; then bar; else baz”不同

来自分类Dev

为什么以这种方式使用函数参数'foo':*(&foo)?

来自分类Dev

使用 moduleFor('foo:bar', 'unit@foo:bar') 搜索并替换 moduleFor('foo:bar')

来自分类Dev

为什么要使用count('foo')?

来自分类Dev

为什么要使用count('foo')?

来自分类Dev

“ Foobar”或“ foo”或“ bar”是什么意思?

来自分类Dev

“ Foobar”或“ foo”或“ bar”是什么意思?

来自分类Dev

foo = bar programname是什么意思

来自分类Dev

"[ "$foo_user" = 'foo' ] && foo_user='bar' || true" 有什么作用?

来自分类Dev

为什么scalac会推断“ Foo with Bar”而不只是“ Foo”作为匹配/大小写返回类型?

Related 相关文章

  1. 1

    为什么foo = bar与foo = bar不同?

  2. 2

    为什么使用Foo [T <:Bar]要求Foo [_ <:Bar]而不是Foo [_]

  3. 3

    python中装饰器中的foo=bar(foo)和something=bar(foo)有什么区别?

  4. 4

    为什么不要求在赋值`foo = $ bar`中双引号`$ bar`?

  5. 5

    Scala中的s“ foo $ bar”和“ foo%s” .format(bar)有什么区别

  6. 6

    在PHP中,当类不存在时,为什么\ Foo \ Bar :: class不会生成错误?

  7. 7

    为什么FOO = bar; 将变量导出到我的环境中

  8. 8

    为什么是“ Foo f(Bar());” 可以是采用Bar类型并返回Foo类型的函数的声明?

  9. 9

    foo =“ bar”; if(foo ==“ bar”){doX(); }其他{“但是这总是运行”}为什么?

  10. 10

    在bar :: foo`的内部使用`foo`吗?

  11. 11

    指针分配“ * foo ++ = * bar ++;”在C中做什么?

  12. 12

    BigQuery中的ARRAY_AGG(foo where bar)等价于什么?

  13. 13

    指针分配“ * foo ++ = * bar ++;”在C中做什么?

  14. 14

    在Groovy中,“ foo?.bar”是什么意思?

  15. 15

    域foo.bar指向127.0.53.53-为什么?

  16. 16

    Elixir中的“%w(foo,bar)”构造

  17. 17

    为什么grep 不匹配单词边界处的正斜杠(例如`import baz from './foo/bar/baz';` 中的`/baz`)?

  18. 18

    $ foo [bar]和$ foo ['bar']在php中的区别

  19. 19

    js中的“ foo.bar”和“ foo ['bar']”之间的区别

  20. 20

    bash中的“ foo && bar || baz”与“ if foo; then bar; else baz”不同

  21. 21

    为什么以这种方式使用函数参数'foo':*(&foo)?

  22. 22

    使用 moduleFor('foo:bar', 'unit@foo:bar') 搜索并替换 moduleFor('foo:bar')

  23. 23

    为什么要使用count('foo')?

  24. 24

    为什么要使用count('foo')?

  25. 25

    “ Foobar”或“ foo”或“ bar”是什么意思?

  26. 26

    “ Foobar”或“ foo”或“ bar”是什么意思?

  27. 27

    foo = bar programname是什么意思

  28. 28

    "[ "$foo_user" = 'foo' ] && foo_user='bar' || true" 有什么作用?

  29. 29

    为什么scalac会推断“ Foo with Bar”而不只是“ Foo”作为匹配/大小写返回类型?

热门标签

归档