adn*_*ann 4 ruby-on-rails activesupport
我正在查看Rails的ActiveSupport扩展,遇到了“输入?”字样。方法。对我来说,它的外观和工作方式与“ include?”完全相同 方法,但只是相反。
([1..5]).include? 1
1.in? ([1..5])
Run Code Online (Sandbox Code Playgroud)
我一直在使用“包含?” 自从我第一次开始使用Rails以来,这种方法非常有趣,因为还有另一种方法可以做完全相同的事情。我缺少的两种方法有什么区别吗?
编辑
在任何情况下都使用“输入”吗?会比使用“包含”受益更多??因为现在,我只能想到的是“在吗?” 给“ include”一个相当无意义的方法是什么?为此目的已经存在。
在?在Rails 3.1之后可用该方法。那么,如果您要使用?方法,我们需要标记要求'active_support',然后才能使用in?方法。
但是包含?方法可用于所有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
Run Code Online (Sandbox Code Playgroud)
从Rails控制台:
1.in?(1..5)
=> true
(1..5).include? 1
=> true
Run Code Online (Sandbox Code Playgroud)
检查其性能:
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)
Run Code Online (Sandbox Code Playgroud)
您可以看到,包括吗?比in快?
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |