0
вот мой код:По умолчанию реализации протокола для Enum
protocol Logable {
func log()
}
extension Logable where Self: Error {
func log() {
switch self {
case .Server(code: Int, message: String):
print("code = \(code), message = \(message)")
}
}
}
enum Error: Logable {
case Client(code: Int, message: String)
case Server(code: Int, message: String)
}
Как вы видите, я хочу создать реализацию по умолчанию для протокола LogableError
для моего перечисления Error
. Возможно, это невозможно - укажите ссылку. Не запускайте его на детской площадке, она ничего не показывает, но компилятор дает ошибку: type 'Self' constrained to non-protocol type 'Error'
Попробуйте 'Само == Error' в расширении протокола – Roshan
@Roshan это дает' требование же типа делает общий параметр «самости» нон-generic' – katleta3000
Да, вроде было предчувствие, что не будет работать. Если вам нужно реализовать протокол для определенного типа, вы должны добавить расширение самого типа вместо протокола ... – Roshan