gpt4 book ai didi

swift - Set 的扩展,其中元素是特定类型的数组

转载 作者:行者123 更新时间:2023-11-30 10:09:19 25 4
gpt4 key购买 nike

我想向 Set 结构添加扩展,但前提是 Set 的元素是 NSOperations 数组。可能吗?

我想写这样的东西,但它不是有效的代码:

extension Set where Element : Array<NSOperation> { }

因为type 'Element' constrained to non-protocol type 'Array<NSOperation> 。所以我想创建一个协议(protocol)并使用该协议(protocol)扩展 NSOperations 数组:

protocol ArrayOfOperations { }
extension Array : ArrayOfOperations where Element : NSOperation { }

它也不起作用,因为 Extension of type 'Array' with constraints cannot have an inheritance clause .

所以我有点迷失在这里。您知道如何解决这个问题吗?

最佳答案

因为你不能创建 Array<NSOperation>符合Hashable你必须制作一个小的包装结构。

例如

struct NSOperationList {

var operations = [NSOperation]()
}

然后在 NSOperationList 之上构建您需要的所有功能.
因此,如果您想添加对 Set 的支持:

extension NSOperationList: Hashable {

var hashValue: Int {
return operations.reduce(0) { $0 ^ $1.hashValue }
}
}

func == (a: NSOperationList, b: NSOperationList) -> Bool {
return a.operations == b.operations
}

关于swift - Set 的扩展,其中元素是特定类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33957410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com