Swift 기초 문법 - 29. private(set)

정성윤·2023년 7월 31일
0

Swift 이론

목록 보기
31/64

스위프트에서 private(set)은 변수나 속성을 정의할 때 사용하는 액세스 제어자 중 하나입니다.
액세스 제어자는 해당 변수나 속성이 어디서 접근 가능한지를 제어하는 역할을 합니다.

private(set)은 두가지 목적을 가지고 있습니다.

private(set)으로 선언한 변수는 해당 변수를 선언한 같은 파일 내에서는 읽기와 쓰기가 모두 가능합니다.
즉, 변수에 접근해서 값을 변경하는 것이 가능합니다.

하지만 다른 파일이나 모듈에서는 해당 변수에 접근해서 값을 변경할 수 없습니다. 즉, 변수의 쓰기 권한은 private이지만, 읽기 권한은 'private(set)'으로 확장된 것입니다.

// Example.swift 파일 내용

class Example {
    private(set) var privateSetVariable: Int = 10
    
    private var privateVariable: Int = 20
    
    func doSomething() {
        privateSetVariable = 30 // 가능
        privateVariable = 40 // 가능
    }}

// AnotherFile.swift 파일 내용

func accessExampleVariable() {
    let example = Example()
    // example.privateSetVariable = 50 // 에러: private(set) 속성이므로 다른 파일에서는 쓰기가 불가능합니다.
    // example.privateVariable = 60 // 에러: private 속성이므로 다른 파일에서는 접근이 불가능합니다.
    let value = example.privateSetVariable // 읽기는 가능합니다.
    // let value = example.privateVariable // 에러: private 속성이므로 다른 파일에서는 접근이 불가능합니다.
    print(value) // 출력: 30 (doSomething() 메서드에서 변경된 값)
}

private(set)은 주로 캡슐화와 정보 은닉을 위해 사용됩니다. 내부 상태를 외부에서 직접 변경하지 못하게 하면서(getter로 값을 읽을 수 있게 하면서) 클래스의 일부 API를 제공할때 유용합니다.

참고(출처) : 개발하는 정대리, 야곰(Swift5)

profile
이유있는 스위프트 개발자

0개의 댓글