Ответ 1
Да, вы можете. Но вы не ставите func
перед init
:
protocol Serialization {
init(key keyValue: String, jsonValue: String)
}
Когда я пытаюсь реализовать свой протокол таким образом:
protocol Serialization {
func init(key keyValue: String, jsonValue: String)
}
Я получаю сообщение об ошибке: Ожидаемый идентификатор в объявлении функции.
Почему я получаю эту ошибку?
Да, вы можете. Но вы не ставите func
перед init
:
protocol Serialization {
init(key keyValue: String, jsonValue: String)
}
Ключевые моменты здесь:
func
перед методом init
.init
, теперь вам нужно префикс метода init
с ключевым словом required
. Это указывает на то, что протокол, который вам соответствует, требует, чтобы у вас был этот метод init
(хотя вы, возможно, самостоятельно подумали, что это отличная идея).Как описано другими, ваш протокол будет выглядеть следующим образом:
protocol Serialization {
init(key keyValue: String, jsonValue: String)
}
И, как пример, класс, соответствующий этому протоколу, может выглядеть так:
class Person: Serialization {
required init(key keyValue: String, jsonValue: String) {
// your logic here
}
}
Обратите внимание на требуемое ключевое слово перед методом init
.