任务的hashValue在Swift并发上是唯一的吗?

4dc9hkyq  于 2022-12-17  发布在  Swift
关注(0)|答案(1)|浏览(126)

我想有一个SomeProtocol的数组,它有一个get属性表示在任务扩展中。
如果Task的hashValue是唯一的,我想把它当作一个主键来移除SomeProtocol数组中的对象,我想知道它在内存级别上也是有保证的。
下面是代码。

protocol SomeProtocol {
    var taskId: Int { get }
}

extension Task: SomeProtocol {
    var taskId: Int {
        get { return hashValue }
    }
}
idfiyjo8

idfiyjo81#

根据定义,哈希值不是唯一的。如果要为任务分配唯一的ID,可能需要自己处理:

struct IdentifiableTask<E,F>: Identifiable where F:Error {
    let id = UUID()
    let task: Task<E,F>
    
    init(_ task: Task<E,F>) {
        self.task = task
    }
}

相关问题