Dưới đây là một số mã ví dụ:Mảng của Ruby. so sánh các yếu tố cho sự bình đẳng?
class Obj
attr :c, true
def == that
p '=='
that.c == self.c
end
def <=> that
p '<=>'
that.c <=> self.c
end
def equal? that
p 'equal?'
that.c.equal? self.c
end
def eql? that
p 'eql?'
that.c.eql? self.c
end
end
a = Obj.new
b = Obj.new
a.c = 1
b.c = 1
p [a] | [b]
Nó in 2 đối tượng nhưng cần in 1 đối tượng. Không có phương thức so sánh nào được gọi. Làm thế nào là Array. so sánh cho bình đẳng?
Chỉ cần xác nhận - phương thức băm # Array của Ruby có đảm bảo rằng các giá trị sẽ bằng và chỉ khi nội dung của các mảng bằng nhau không? –
@EricWalker No. Nó đảm bảo rằng hai mảng băm bằng nhau nếu (nhưng không chỉ nếu) cả hai mảng chứa các phần tử có cùng giá trị băm theo cùng thứ tự. Tuy nhiên điều này là không liên quan đến câu hỏi này như ở đây băm chỉ được gọi là trên các yếu tố, không bao giờ trên các mảng mình. – sepp2k