Tôi có một lớp Foo với một vài biến thành viên. Khi tất cả các giá trị trong hai trường hợp của lớp đều bằng nhau, tôi muốn các đối tượng được 'bằng nhau'. Sau đó tôi muốn các đối tượng này là chìa khóa trong băm của tôi. Khi tôi đang thử điều này, hàm băm xử lý từng trường hợp là không bằng nhau.Làm thế nào để tạo đối tượng dụ một khóa băm trong Ruby?
h = {}
f1 = Foo.new(a,b)
f2 = Foo.new(a,b)
f1 và f2 phải bằng nhau tại thời điểm này.
h[f1] = 7
h[f2] = 8
puts h[f1]
nên in 8
Giải thích hoàn hảo. =) – Mereghost
Tốt, ngoại trừ hàm băm trả về phải là một bản sửa lỗi, vì vậy tốt hơn nên sử dụng độc quyền hoặc thay vì tổng (có thể tràn vào bignum). Ngoài ra, sử dụng 'mảng # băm', như' [@ data1, @ data2] .hash', nói. –
Điểm tốt. Việc thêm các băm riêng lẻ với nhau cũng có nguy cơ mà cùng một tổng có thể phát sinh từ các băm riêng lẻ khác nhau (3 + 2 = 5 và 1 + 4 = 5). Sử dụng mảng # hash như Marc-Andre gợi ý sẽ làm cho giải pháp hoàn chỉnh hơn. – Mark