Swift 입문 | 클래스 기본 | Computed 속성

상속 외에도 이것은 기억 두지 않으면 안되는 기능이 몇 가지 있다. 그것에 대해서도 설명하겠다. 먼저 “Computed 속성"을 설명하겠다.

속성이라는 것은 클래스에 값을 보관할 변수이다. 이것은 그대로 값을 교체할 수 있기 때문에, 어떤 값이 될지 모른다. 여기서 값의 입출력을 프로그래밍으로 제어할 수 있도록 한 것이 Computed 속성이다.

Computed 속성은 다음과 같이 작성한다.

var 속성 : 유형 {
    get {
        ...... 처리 ......
        return 값
    }
    set {
        ...... 처리 ......
    }
}

속성의 선언 뒤에 {}가 있고, 그 안에 get 및 set이라는 것이 작성하고, 여기에서 값을 읽고 쓰기 위한 처리를 작성한다. get만 작성하고 set를 작성하지 않으면, 값을 얻기만 가능하고 수정할 수 없는 속성이 된다. 반대로 set만 작성하면, 값 변경만 가능하고 얻을 수 없는 속성이 된다.

아래 Computed 속성의 사용 예제를 보도록 하자.

class Friend {
    var name:String
    
    var old:Int
    
    var age:Int {
        get {
            return old
        }
        set {
            if newValue > 0 {
                old = newValue
            }
        }
    }
    
    init(name:String, age:Int) {
        self.name = name
        self.old = age
    }
    
    func printData() {
        print("\(self.name) (\(age))")
    }
}

var you = Friend(name: "Taro", age: 30)
you.printData()

여기에서는 age라는 Computed 속성을 사용하고 있다. 실제 값은 old라는 속성에 보관하고 있다. Computed 속성은 이 처럼 실제 값을 보관해 두기 위한 장소를 따로 마련할 필요가 있는 것이다.