본문 바로가기

개발/Swift

[Swift] 계산 프로퍼티(Computed Properties) 쉽고 간단하게 알아보기

흔히 알고있는 프로퍼티는 "저장 프로퍼티"로 값을 저장하는 역할을 합니다.

그러나, 아주 유용한 계산 프로퍼티로 사용하는 방법도 있습니다.

계산 프로퍼티(Computed Properties) 를 공부하면서 예시를 들어볼게요.

 

계산 할 때도 유용하지만, 화면 전환시 VC1에서 VC2의 계산프로퍼티에 엑세스하면 어떤 함수를 호출한다던지

다양한 방법으로 사용이 가능한 것 같습니다.

 


계산 프로퍼티 get 사용해보기

아주아주 쉬운 순한맛 예시로 곱셈을 해보겠습니다.


import Foundation

struct Multi {
        // first x second 이렇게 2개 항을 만듭니다.
    var first: Int
    var second: Int
        var result = 0

        // 여기에 계산 프로퍼티가 적용됩니다.
        // 계산프로퍼티는 항상 var로 정의해야합니다
        // get은 Multi().calculate 가 호출될 때 return됩니다.
    var calculate: Int {
        get {
            return first * second
        }
    }
}

// 자 이제 이 구조체를 사용해서 곱셈을 해봅시다.
// 우선 a라는 변수에 구조체를 초기화합니다.
// 5 * 4를 해줄게요. 
var a = Multi(first: 5, second: 4)
print("곱셈 결과는 \(a.calculate) 입니다.")

    // 출력 --> 곱셈 결과는 20 입니다.

위처럼 get만 사용한 계산프로퍼티를 읽기전용 계 산사로퍼티라 합니다.

(Read-only Computed Properties)

호출할 때 지정한 Type으로 return 합니다.

이름과 같이 값을 호출하는 것만 가능하고 값을 셋팅하는 것은 불가합니다.

읽기전용 계산 프로퍼티에 값을 세팅하려고하면 이렇게 오류가 발생합니다!

 

 


 

get, set 모두 사용하기

자 이제 get을 사용해봤으니 set도 같이 써봅시다.

MyPoint라는 구조체를 만들어 계산프로퍼티인 point 를 호출하면 현재 점수를, point를 세팅하면 세팅 값 만큼 점수를 업데이트 해보겠습니다.


import Foundation

struct MyPoint {
    // 포인트를 초기화 합니다.
  var currentPoint: Int

    // 이 부분이 계산 프로퍼티입니다.
    // get은 프로퍼티 호출시, set은 값 세팅시 호출됩니다.
  var point: Int {
        // get에는 단순히 현재가진 포인트를 리턴할거에요.
    get {
        print("현재 Heon님은 \(currentPoint)점 입니다.")
        return currentPoint
    }
    // set은 현위치에서 값이 셋업된 만큼 더하여 현위치를 업데이트 할거에요.
        // newValue는 따로 지정하지 않아도 세팅한 값을 담고있습니다.
        // set(newPoint)와 같이 이름을 지정할수도 있습니다.
    set {
        currentPoint += newValue
        print("Heon님은 \(newValue) 점을 획득하여 총\(currentPoint)점 입니다.")
    }
  }
}

// heon이라는 구조체를 초기화하고 포인트를 0점으로 설정합니다.
var heon = MyPoint(currentPoint: 0)
// Point에 엑세스하여(get) 현재 점수를 확인합니다.
heon.point 
// 현재 Heon님은 0점 입니다.

// 이제 값을 세팅해봅시다.
heon.point = 30
// --> Heon은 30점을 획득하여 총 30점 입니다.
heon.point = 50
// --> Heon은 50점을 획득하여 총 80점 입니다.
heon.point
// --> 현재 Heon님은 80점입니다.

Swift 공식문서 예제를 보고 너무 헷갈렸는데 이제 조금씩 이해가 되는 것 같네요..!

다들 조금 조금씩 이해하다보면 Swift 공식문서 예시도 딱 이해가 되실거에요.

 


이해가 되신 분들은 아래 문서도 읽어보세요!!

Swift 공식문서 [계산 프로퍼티]

영문(공식)

https://docs.swift.org/swift-book/LanguageGuide/Properties.html

 

Properties — The Swift Programming Language (Swift 5.7)

Properties Properties associate values with a particular class, structure, or enumeration. Stored properties store constant and variable values as part of an instance, whereas computed properties calculate (rather than store) a value. Computed properties a

docs.swift.org

한글(번역)

https://jusung.gitbook.io/the-swift-language-guide/language-guide/10-properties#computed-properties

 

프로퍼티 (Properties) - The Swift Language Guide (한국어)

프로퍼티는 클래스, 구조체, 열거형과 관련한 값입니다. 프로퍼티의 종류에는 저장 프로퍼티(Stored Properties)와 계산된 프로퍼티(Computed Properties)가 있습니다. 저장 프로퍼티는 말 그대로 값을 저

jusung.gitbook.io

 

 

 

 

 

반응형