В Swift, насколько я понимаю, протоколы описывают атрибуты, которые могут применяться к структуре данных. Затем расширения протокола позволяют определять эти атрибуты для каждой структуры данных, к которой они применяются.Недопустимое переопределение переменной в расширенном расширении протокола
Если это правда, то почему появляется следующее сообщение об ошибке:
недействительным переопределение 'недействительный'
На этой линии:
extension CausesError where Self: Example { var invalid: Bool { return true } }
В этом коде:
struct Example: CausesError { }
protocol CausesError { var invalid: Bool { get } }
extension CausesError where Self: Example { var invalid: Bool { return true } }
Вы заметили, что есть еще одна ошибка? * "type 'Self', ограниченный не-протокольным типом 'Example'" * - Это реальная проблема. –
Я не вижу эту ошибку, только указанную в вопросе, а затем консоль, указав местоположение ее первоначального использования. Тем не менее, Xcode не всегда имеет непротиворечивое представление ошибки, так что же такое ошибка указывает? –
'Example' - это' struct', тип значения, который не позволяет наследование. 'Self' не может соответствовать (по протоколу) или наследовать (как для класса)' Example'. Если вы, например, измените 'Example' на' class' вместо struct, выше будет компилироваться. – dfri