簡體   English   中英

使用 UUID hashValue 使 Hashable 的所有數組元素唯一?

[英]Make all elements of array that are Hashable unique with a UUID hashValue?

我有一個符合 Hashable 的類型數組,這些類型可以是符合Hashable的任何類型。 我遇到的問題是說我有一個字符串數組

let people = ["Joe", "Tom", "Bob", "Joe"]

if people[3] == people[people.firstIndex(of: "Joe")!]  {
    print(true) // Always true.
}

Hashable具有hashValue應該能夠使這些值唯一,但是hashValue匹配相同的值。 有沒有一種方法可以擴展Hashable以便符合它的每個元素都將獲得分配的UUID() ,因此與其他任何元素都不相同?

基本上,有沒有辦法獲得id: UUID符合Hashable的所有內容

您可能希望以稍微不同的方式執行此操作。 你的數組可以是Identifiable嗎? 那么你的例子可能是:

struct Person: Identifiable, Hashable {
    let id = UUID()
    let name: String
}

每個Person實例都有一個唯一的 hashValue:

let people = [Person(name: "Joe"), Person(name: "Joe"), Person(name: "Joe")]
people.map(\.hashValue) // e.g. -> [7672515142881976808, -2470749298227582550, 3252810522385000211]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM