어떻게 프로토콜에서 각각의 멤버들을 구현해야 하는지에 대한 요구사항에 대해 배워보자. 아래 코드를 기준으로 한번 살펴보자구욧!
protocol Sopt {
var partLeader: String { get set }
var seminaPlace: String { get set }
var mvp: String { get set }
func semina()
func assignment()
}
⇒ 우리는 흔히 프로토콜을 채택해서 구현할 때 저장 프로퍼티로 정의해야 된다는 생각을 하는데 연산 프로퍼티를 사용해도 된다!
protocol Sopt {
var partLeader: String { get }
}
struct IOS: Sopt { // 저장 프로퍼티
var partLeader: String = "김승찬"
}
struct Server: Sopt { // 연산 프로퍼티
var partLeader: String {
return "이승헌"
}
}
let으로 선언하면 에러가 난다.
⇒ 그 이유는 아마도 프로토콜을 채택하면 저장 프로퍼티, 연산 프로퍼티 둘로 구현할 수 있는데, 연산 프로퍼티 자체가 var로 선언되면 안되기 때문에!! 그런거 같다!!
그럼 프로토콜에서 선언된 프로퍼티들은 var, let 중 뭐로 선언해야 좋을까?
저장 프로퍼티 → {get set}인지 {get}인지에 따라서 달라진다.
연산 프로퍼티 → 무조건 var로 선언해야겠쬬?
천천히 알아봅시다!
프로토콜에서 gettable만 필요로 하는 경우, 모든 종류의 프로퍼티에서 요구사항을 충족시킬 수 있으며 , 만약 필요하다면 settable이 될 수도 있습니다.
내가 새로 만든 인스턴스의 값을 읽어오긴만 한다면