Я хочу добавить универсальный параметр для всех типов коллекций, которые имеют isEmpty
, чтобы они также могли иметь isNotEmpty
Когда я пытаюсь заставить Collection
соответствовать Occupiable
Я получил ошибку компиляции
ошибка здесь: расширение протокола 'Collection' не может иметь предложение о наследовании
также String
соответствует протоколу, который присущ массиву, поэтому мы можем просто удалить 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 { }