У меня есть 2 протокола. Мне нужен первый (NameProtocol) для принудительного применения Equatable протокола. В то время как у другого класса (BuilderProtocol) есть метод, который возвращает первый (NameProtocol).Быстродействующий протокол, форсирующий равный протокол
public protocol NameProtocol : Equatable {
var name: String { get }
}
public protocol BuilderProtocol {
func build() -> NameProtocol? // Compiler error
init()
}
Ошибка компилятора: «Протокол„NameProtocol“может быть использован только в качестве общего ограничения, поскольку он имеет Самость или связанные с ними требования типа»
мне нужно вернуть объект по сборке(), чтобы возвращать объект, соответствующий NameProtocol и на котором я могу определить ==
Есть ли способ, которым я могу сделать эту работу?
Благодаря
При использовании typealias в BuilderProtocol, как я могу сделать заявление работы массива?
public protocol OtherRelatedProtocol {
var allNames : Array<NameProtocol> { get }
}
Заключение
я удалить Equatable и реализовать метод IsEqual.
public protocol NameProtocol {
func isEqual(nameable: NameProtocol) -> Bool
var name: String { get }
}
Это сообщение об ошибке вводит в заблуждение (все еще в 3.0.2); он должен читать «* if * it has». – Raphael