Dans quelle mesure comparez-vous Hash les uns aux autres sur le rubis? J'étais curieux, alors j'ai essayé de le vérifier.
En conséquence, bien qu'il soit décrit dans le document officiel ** Renvoie true si self et other contiennent le même nombre de clés, les clés sont toutes égales comparées par la méthode eql? Et les valeurs sont toutes égales par rapport à la méthode ==. ** **
Référence: méthode d'instance Hash # ==
Cela semble fonctionner, vérifions.
require 'securerandom'
keys = Array.new
values = Array.new
#Créer 1000 données de test
1000.times do
keys << SecureRandom.alphanumeric
end
1000.times do
values << SecureRandom.base64(100)
end
#Comparaison de différents contenus de valeur
a = Hash.new
b = Hash.new
keys.each do |key|
a[key] = values.sample
b[key] = values.sample
end
puts a == b ? "match!!" : "unmatch..."
#Comparaison avec le même contenu de valeur
a = Hash.new
b = Hash.new
keys.each_with_index do |key, i|
a[key] = values[i]
b[key] = values[i]
end
puts a == b ? "match!!" : "unmatch..."
résultat
$ >> ruby test.rb
unmatch...
match!!
Il semble qu'il soit correctement comparé, tel qu'il est officiellement écrit.
Recommended Posts