연산 프로퍼티

연산 프로퍼티 이해하기

개인적으로 연산 프로퍼티를 쉽게 이해하기 위해 작성한다. 연산 프로퍼티란 특정 연산을 통해 값을 제공하는 프로퍼티다. get은 값을 반환하며 set은 값을 할당한다. 그러나 연산 프로퍼티 자체의 값을 변경하기 위해서가 아니라 클래스나 구조체 등 해당 인스턴스의 다른 프로퍼티와 의존적인 관계인 경우에 사용한다. 예시를 통해 이해해보자.

class Length {
    var length = 0.0
    
    var half: Double {
        get {
            return length / 2.0
        }
        set {
            length = newValue * 2.0
        }
    }
}

set이 없다면 halflength에 의해서 계산만 되어질뿐 새로운 값을 할당할 수 없으며 half만으로 length 의 값을 구할 수 없다. 그러나 실제로는 lengthhalf(length)는 연관된 값이고, length를 통해 half를 구할 수 있듯, half를 통해서도 length를 구할 수 도 있어야 한다. 그렇기 때문에 set을 구현하고, setnewValue를 통해 연관된 값인 length를 업데이트 할 수 있는 연산을 추가하는 것이다. 그래서 연산(관) 프로퍼티로 외우면 이해하기 쉽다.