PropertyWrapper

종류: Develop

정의

로직을 프로퍼티 자체에 연결할 수 있어 보일러플레이트 코드와 코드 재사용성을 높혀줌

Property Wrapper라는 이름에 걸맞게 프로퍼티를 가질 수 있는 타입 앞에 붙힐 수 있음 (class, struct, enum)

  • @propertyWrapper를 붙혀 컴파일러에게 “이 타입은 특별하다”고 알려줄 수 있음
  • 그 행동을 정의하는 타입을 하나 생성

ex) Uppercased를 해주고싶으니 Uppercase라는 타입을 생성

@propertyWrapper
struct Uppercase {
    
    private var value: String = ""
    
    var wrappedValue: String {
        get { self.value }
        set { self.value = newValue.uppercased() }
    }
    
    init(wrappedValue initialValue: String) {
        self.wrappedValue = initialValue
    }
}
struct Address {

    @Uppercase var town: String
}

let address = Address(town: "earth")
print(address.town) // EARTH