Ich habe eine Klasse Foo mit ein paar Membervariablen. Wenn alle Werte in zwei Instanzen der Klasse gleich sind, möchte ich, dass die Objekte 'gleich' sind. Ich möchte dann, dass diese Objekte Schlüssel in meinem Hash sind. Wenn ich dies derzeit versuche, behandelt der Hash jede Instanz als ungleich.Wie wird Objektinstanz in Ruby zu einem Hash-Schlüssel gemacht?
h = {}
f1 = Foo.new(a,b)
f2 = Foo.new(a,b)
f1 und f2 sollten an dieser Stelle gleich sein.
h[f1] = 7
h[f2] = 8
puts h[f1]
sollte drucken 8
Perfekte Erklärung. =) – Mereghost
Gut, außer dass der zurückgegebene Hash eine fixnum sein sollte, also verwende lieber exclusive oder anstelle von sum (was zu einem bignum überlaufen könnte). Alternativ verwenden Sie 'Array # hash', wie' [@ data1, @ data2] .hash', sagen wir. –
Guter Punkt. Das Hinzufügen von einzelnen Hashes birgt auch die Gefahr, dass aus verschiedenen einzelnen Hashes die gleiche Summe entsteht (3 + 2 = 5 und 1 + 4 = 5). Die Verwendung von Array # Hash, wie es Marc-Andre vorschlägt, würde die Lösung vervollständigen. – Mark