programing

프로토콜에 초기화 기능을 사용할 수 있습니까?

randomtip 2021. 1. 18. 07:56
반응형

프로토콜에 초기화 기능을 사용할 수 있습니까?


이 방법으로 프로토콜을 구현하려고 할 때 :

protocol Serialization {
    func init(key keyValue: String, jsonValue: String)
}

다음과 같은 오류가 발생 합니다. 함수 선언에 식별자가 필요합니다.

이 오류가 발생하는 이유는 무엇입니까?


그래 넌 할수있어. 그러나 당신 func은 앞에 두지 않았습니다 init.

protocol Serialization {
    init(key keyValue: String, jsonValue: String)
}

여기서 핵심 포인트 :

  1. 프로토콜 및 구현을 그 클래스는 결코 키워드가 없습니다 func의 앞에 init방법.
  2. 클래스에서 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방법.

참조 URL : https://stackoverflow.com/questions/25694384/can-i-have-an-init-func-in-a-protocol

반응형