Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道:与x27之间的差异;在';和';包括?';在轨_Ruby On Rails_Activesupport - Fatal编程技术网

Ruby on rails 轨道:与x27之间的差异;在';和';包括?';在轨

Ruby on rails 轨道:与x27之间的差异;在';和';包括?';在轨,ruby-on-rails,activesupport,Ruby On Rails,Activesupport,我在研究Rails的ActiveSupport扩展时遇到了“in”方法。在我看来,它的外观和工作原理与“include”方法完全相同,但恰恰相反 ([1..5]).include? 1 1.in? ([1..5]) 自从我第一次开始使用Rails以来,我一直在使用“include”方法,所以有趣的是,还有另一种方法可以做完全相同的事情。我缺少的两种方法有什么不同吗 编辑 是否存在使用“in”比使用“include”更有益的情况?因为现在,我所能想到的只是“in”是一个毫无意义的方法,因为“in

我在研究Rails的ActiveSupport扩展时遇到了“in”方法。在我看来,它的外观和工作原理与“include”方法完全相同,但恰恰相反

([1..5]).include? 1
1.in? ([1..5])
自从我第一次开始使用Rails以来,我一直在使用“include”方法,所以有趣的是,还有另一种方法可以做完全相同的事情。我缺少的两种方法有什么不同吗

编辑


是否存在使用“in”比使用“include”更有益的情况?因为现在,我所能想到的只是“in”是一个毫无意义的方法,因为“include”已经存在了?方法在Rails 3.1之后可用。那么,如果你想在中使用?方法,我们需要标记为需要“主动支持”,然后我们可以在中使用?方法

但这其中包括什么呢?中的方法可用于所有枚举。与普通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控制台:

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)

你可以看到,包括?比in快?

include?
是一种ruby数组方法,而'in'是是rails
activesupport
Method感谢您的全面回答。我想知道是否还有一件事可以澄清。是否存在使用“in”比使用“include”更有益的情况?因为现在,我所能想到的是“in”是一个毫无意义的方法,因为“include”已经存在了。@adnannclude?是比in更好的选择吗?@adnann请检查我的答案,我用这两种方法的性能比较更新了它。希望有帮助:)谢谢!你的回答是肯定的。那么,是谁进来了?方法毕竟是毫无意义的。非常有用的见解。