Set / Array的多个约束

时间:2017-04-03 16:11:29

标签: arrays swift set swift-protocols

简言之:如何在Swift中的SetArray上设置协议约束?

众所周知,您不能使Set由协议类型组成,因为协议本身不能遵守Hashable方法。

但是,如果所有采用某种协议的类也从NSObject这样的基类继承,那么应该可以使Set由遵守所述协议的几个类组成,因为{{ 1}}采用先决条件NSObject协议。

尽管如此,我甚至无法找到如何使用基类和协议约束生成普通Hashable

添加通用约束,例如

Array 只会产生let array:Array<T: NSObject where T: NSObjectProtocol>

Expected '>' to complete generic argument list 导致同样的错误以及let set = Set<NSObject:NSObjectProtocol>()

Expected expression 结果为let set = Set<NSObject, NSObjectProtocol>()

0 个答案:

没有答案