Swift에서 private(set)을 사용하여 속성을 범위 밖에서만 읽을 수 있도록 만들기

2148 단어 swiftios
나는 최근에 getter가 내부 또는 공개적으로 액세스되는 동안 클래스 및 구조체 속성에 대한 setter를 비공개로 설정할 수 있는 Swift 기능을 발견했습니다. 이를 통해 나중에 누군가 속성을 변경할지 걱정하지 않고 속성을 외부 세계에 노출할 수 있습니다. 나는 주로 일부 유형의 종속성에 액세스할 수 있도록 하기 위해 이 작업을 수행합니다.

아래 예제는 이것을 클래스나 구조체에서 어떻게 사용할 수 있는지 보여줍니다.

class Example {
  // prop will have an internal access modifier
  private(set) var prop: Type

  // prop with public access modifier
  public private(set) var prop: Type
}


prop는 캡슐화된 구조체 또는 클래스의 범위 내에서만 변경(설정)할 수 있지만 외부에서는 읽을 수만 있습니다.
var로 표시된 속성은 상수이고 기본적으로 변경할 수 없기 때문에 개인 setter 설정은 let로 표시된 속성에서만 작동하고 let로 표시된 속성에서는 작동하지 않습니다.

이 Swift 기능은 다른 개인 속성이 지원하는 읽기 전용 속성이 있는 경우에도 사용할 수 있습니다. 이 같은:

class Example {
  private var _prop: Type

  var prop: Type {
    get {
      return _prop
    }
  }
}

// Using private(set) makes code more readable and reduces the complexity:

class Example {
  private(set) var prop: Type
}

좋은 웹페이지 즐겨찾기