繁体   English   中英

Task 的 hashValue 在 Swift 并发性上是唯一的吗?

[英]is hashValue of Task unique on Swift concurrency?

我想要一个 SomeProtocol 数组,它有一个 get 属性表示在任务扩展中。

如果 Task 的 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
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM