'in?'之间的区别和'包括?'在Rails中

时间:2015-02-02 07:00:24

标签: ruby-on-rails activesupport

我正在越过Rails' ActiveSupport扩展程序和我遇到了' in?'方法。对我而言,它的外观和作用与“包含”完全相同?'方法,但反过来。

([1..5]).include? 1
1.in? ([1..5])

我一直在使用' include?'自从我第一次开始使用Rails之后的方法,所以有趣的另一种方法完全相同。我错过的两种方法有什么不同吗?

修改

是否存在使用' in?'的情况?比使用“包含”更有益吗?' ?因为现在,我所能想到的只是“' in?'给出了一个相当无意义的方法,包括?'为了它的目的已经存在。

1 个答案:

答案 0 :(得分:5)

在?方法在Rails 3.1之后可用。那么如果你想使用?方法,我们需要标记要求' active_support'那我们可以利用吗?方法

但包括?适用于所有Enumerables的方法。就像在普通的ruby控制台中一样,你可以尝试:

From irb: 
(1..5).include? 1 #you are checking for include? on a range.
=> true
(1..5).to_a.include? 1 # you are checking on an Array.
=> true 
2.1.5 :023 > 1.in?(1..5)
NoMethodError: undefined method `in?' for 1:Fixnum

来自rails console:

1.in?(1..5)
=> true 
(1..5).include? 1
=> true

检查他们的表现:

 require 'benchmark'
=> false
 puts Benchmark.measure { 90000.in?(1..99000)}
  0.000000   0.000000   0.000000 (0.000014)
 puts Benchmark.measure { (1..99000).include? 90000 }
  0.000000   0.000000   0.000000 ( 0.000007)

你可以看到,包括?比在?

更快