与“Array #index”相比,`Array #include?`的目的是什么?

时间:2014-05-19 03:09:17

标签: ruby arrays

Array#include?仅提供比Array#index提供的信息更弱的信息,即当Array#index返回nil时,使用Array#include?的相应方法调用将返回{ {1}},当false返回一个整数时,Array#index会返回Array#include?。此外,比较两者表明速度没有显着差异;相反true通常会显示比Array#index更好的结果:

Array#include?

然后,a = %w[boo zoo foo bar] t = Time.now 10000.times do a.include?("foo") end puts Time.now - t # => 0.005626235 t = Time.now 10000.times do a.index("foo") end puts Time.now - t # => 0.003683945 的目的是什么?无法使用Array#include?

重写使用它的所有代码

1 个答案:

答案 0 :(得分:3)

我知道这不是官方的理由,但我可以想到一些事情:

  • 清晰度:作为名称,包括?乍一看更有意义,并且通过将自身标识为布尔谓词,还可以轻松地直观地确认代码正确性。这遵循使错误代码看起来错误的概念(参见http://www.joelonsoftware.com/articles/Wrong.html
  • 良好的输入:如果你想要的只是一个布尔值的布尔值,那么这个数字可能会导致错误
  • 清洁度:看到" true"的打印输出是否更好?而不是回到C并且没有布尔值可以说?
相关问题