我想知道如何創建一個包含字符串的紅寶石數組的一致散列。要求是,如果數組包含相同的值,則散列總是相同,而與它們的順序無關。如何創建紅寶石數組的一致性哈希串?
>> a = ["a", "b", "c", "d"]
>> SomeModule.hash(a)
=> "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
>>
>> b = ["d", "b", "c", "a"]
>> SomeModule.hash(b)
=> "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
>>
>> SomeModule.hash(a) == SomeModule.hash(b)
=> true
Zlib或摘要只能做字符串,但我必須總是對數組進行排序並加入它才能工作。
那麼還有什麼更好的?
謝謝,但這實際上是我想避免.. –
我現在看到你最後一句話。但是我不確定如果元素順序無關緊要,你是否會進行排序。 – iltempo
如果你將你的數組轉換爲一個集合,你將丟失重複元素http://www.ruby-doc.org/stdlib-1.9.3/libdoc/set/rdoc/Set.html。不知道這是你想要的。 – iltempo