是任务的hashValue唯一的Swift并发?



我想有一个数组的SomeProtocol有一个get属性在任务扩展表示。

如果任务的hashValue是唯一的,我想把它作为一个主键来删除SomeProtocol数组中的对象。我想知道它在内存级别也是有保证的。

下面是代码

protocol SomeProtocol {
var taskId: Int { get }
}

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

根据定义,散列值不是唯一的。如果您想为您的任务分配一个唯一的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
}
}

最新更新