我想为所有具有isEmpty的集合类型添加一个通用参数,以便它们也可以具有isNotEmpty当我尝试使Collection符合Occupiable时,出现编译错误


  错误:协议“集合”的扩展不能有继承子句


String符合Array固有的协议,因此一旦找到上述问题的解决方案,我们是否可以删除extension String: Occupiable { }

// Anything that can hold a value (strings, arrays, etc)
protocol Occupiable {
    var isEmpty: Bool { get }
    var isNotEmpty: Bool { get }
}

// Give a default implementation of isNotEmpty, so conformance only requires one implementation
extension Occupiable {
    var isNotEmpty: Bool {
        return !isEmpty
    }
}

extension String: Occupiable { }

//  error here : Extension of protocol 'Collection'
//  cannot have an inheritance clause
extension Collection: Occupiable { }

最佳答案

您需要设置一致性约束。
这将修复错误。

extension Collection where Self: Occupiable { }

08-07 04:37