Swift

private(set)

Phililip
728x90

안녕하세요.

 

Swift에서는 상수, 변수, property, subscripts의 getter와 setter의 access level이 property의 해당 상수, 변수, property, subscripts의 access level과 동일하게 설정됩니다.

(예를 들어 property가 private이면 getter와 setter도 private인 거죠)

 

뿐만 아니라, Swift에서는 setter의 access level을 getter 보다 더 낮게 설정할 수도 있어요.

 

이를 위해 var 또는 subscript 키워드 앞에 fileprivate(set) 또는 private(set) 또는 internal(set)을 작성함으로써 setter의 access level을 낮출 수 있습니다.

 

 

예시 몇 개만 보면 바로 이해되실 거예요.

 

예를 들어 아래 numberOfEdits property를 살펴보면 numberOfEdits의 access level은 internal이기 때문에 getter의 access level은 interal이 되고 setter는 private이 됩니다.

 

그래서 해당 프로퍼티를 읽는 것은 문제없지만 값을 설정하려고 하면 에러가 발생합니다. (read-only로 되었어요)

 


이번엔 다른 예시를 볼게요.

 

아래 numberOfEdits property를 살펴보면 numberOfEdits의 access level은 public이기 때문에 getter의 access level은 public이 되고 setter는 fileprivate이 됩니다.

 

그래서 같은 파일 내에선 읽고 쓰는 데 문제가 없지만, 다른 파일에서는 읽기만 가능하게 됩니다.

 

 

어렵지 않죠??ㅎㅎ

 

정리하자면 Swift에서는 setter의 access level만 낮출 수 있고 private(set)을 잘 활용하면 Read-Only Computed Property처럼 property를 read-only로 만들 수 있습니다.

 

#참고

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/accesscontrol/#Getters-and-Setters

 

Documentation

 

docs.swift.org


이번 글은 여기서 마무리.

 

 

 

반응형

'Swift' 카테고리의 다른 글

클래스(class type) 생성자에 대해 알아보자  (0) 2024.01.21
구조체(value type) 생성자에 대해 알아보자  (0) 2024.01.17
@available  (0) 2023.12.05
@testable  (0) 2023.11.21
Dictionary Enum.rawValue subscript  (0) 2023.08.08