Mam klasę Foo z kilkoma zmiennymi składowymi. Gdy wszystkie wartości w dwóch instancjach klasy są równe, chcę, aby obiekty były "równe". Chciałbym wtedy, aby te obiekty były kluczami w moim haszu. Kiedy obecnie próbuję tego, skrót oznacza każdą instancję jako nierówną.Jak zrobić instancję obiektu hash w Ruby?
h = {}
f1 = Foo.new(a,b)
f2 = Foo.new(a,b)
f1 i f2 powinny być równe w tym punkcie.
h[f1] = 7
h[f2] = 8
puts h[f1]
należy wydrukować 8
Doskonałe wyjaśnienie. =) – Mereghost
Dobrze, z wyjątkiem tego, że zwracany hash powinien być fixnum, więc lepiej użyj exclusive lub zamiast sumy (która może przepełnić do bignum). Alternatywnie użyj 'Tablica # hash', np.' [@ Data1, @ data2] .hash', say. –
Dobra uwaga. Dodanie poszczególnych skrótów wiąże się również z niebezpieczeństwem, że ta sama suma może być wynikiem różnych indywidualnych skrótów (3 + 2 = 5 i 1 + 4 = 5). Korzystanie z funkcji Array # hash, jak sugeruje Marc-Andre, sprawi, że rozwiązanie będzie bardziej kompletne. – Mark