スクリプトは、1つの事前定義されたIPがIPの大きな配列に存在するかどうかを確認する必要があります。現在、私はこのように機能するようにコーディングしています(「ips」は私のIPの配列であり、「ip」は事前定義されたIPであると言っています)
ips.each do |existsip|
if ip == existsip
puts "ip exists"
return 1
end
end
puts "ip doesn't exist"
return nil
同じことをするより速い方法はありますか?
編集:私は自分自身を間違って表現したかもしれません。 array.includeを実行できますか?しかし、私が知りたいのは:array.includeですか?私に最速の結果を与える方法?
Set を使用できます。これはHashの上に実装され、大きなデータセット(O(1))の場合は高速になります。
require 'set'
s = Set.new ['1.1.1.1', '1.2.3.4']
# => #<Set: {"1.1.1.1", "1.2.3.4"}>
s.include? '1.1.1.1'
# => true
Array#includeメソッドを使用して、true/falseを返すことができます。
http://Ruby-doc.org/core-1.9.3/Array.html#method-i-include-3F
if ips.include?(ip) #=> true
puts 'ip exists'
else
puts 'ip doesn\'t exist'
end
より高速な方法は次のとおりです。
if ips.include?(ip)
puts "ip exists"
return 1
else
puts "ip doesn't exist"
return nil
end
array#includeを試しましたか?関数?
http://Ruby-doc.org/core-1.9.3/Array.html#method-i-include-3F
ソースから、ネイティブを除いてほぼ同じことをしていることがわかります。
ips = ['10.10.10.10','10.10.10.11','10.10.10.12']
ip = '10.10.10.10'
ips.include?(ip) => true
ip = '10.10.10.13'
ips.include?(ip) => false