Swift Protocol:
Swift의 프로토콜에서는 let으로 속성을 선언할 수 없다.
대신, 읽기 전용 속성을 선언할 때는 var에 get만 붙여서 사용한다.
이유
Swift의 protocol은 구현이 아니라 요구사항만 명시하는 타입이다.
let은 구현체 내부에서 상수로 지정하겠다는 의미지만,
프로토콜은 이 속성이 상수인지 변수인지 미리 알 수 없기 때문에 let을 사용할 수 없다.
올바른 방법: 읽기 전용 속성 선언
1 2 3 4
| protocol MyProtocol { var name: String { get } var age: Int { get set } }
|
구현 예시:
1 2 3 4
| struct Person: MyProtocol { let name: String var age: Int }
|
name은 let으로 선언했지만 get만 있으므로 프로토콜 요구사항을 만족한다.
- 프로토콜에서는
let 대신 var name: String { get }으로 선언하는 것이 핵심이다.
정리
| 질문 |
답변 |
프로토콜에서 let 사용 가능? |
❌ 불가능 |
| 읽기 전용 속성 정의하려면? |
✅ var property: Type { get } 사용 |
구현체에서 let 사용 가능? |
✅ 읽기 전용 속성이면 가능 |