我想为所有具有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 { }