iOS/Swift

[Swift] 연산 프로퍼티 Computed Property

YEN_ 2023. 11. 20. 15:25

 

연산 프로퍼티

- 특징

  1. 저장 공간을 가지지 않음
  2. 직접 값을 가지지는 않지만, 저장 프로퍼티의 값을 읽어서 연산 실행
  3. 항상 var로 선언해야 함
  4. 선언할 때 반드시 자료형을 명시해야 함
var westernAge: Int {
	get {
    	// 값을 연산하여 리턴할 때
    	
        return koreanAge - 1
    }
    set (inputValue) {
    	// 값을 저장(연산)할 때 
    	
        var koreanAge = inputValue + 1 
    }
}

 

- set의 매개변수 이름은 생략가능

  • 명시적으로 newValue 로 접근해서 사용할 수 있음
var westernAge: Int {
	get {
        return koreanAge - 1
    }
    set {
        var koreanAge = newValue + 1 
    }
}

 

- get-only

  • 읽기 전용 연산 프로퍼티
  • 이 경우에는 get 블록을 생략할 수 있다
  • 이 프로퍼티에 set을 하려고 하면 에러가 남
var selfIntroduction: String {
    get {
        return "저는 \(self.class)반 \(name)입니다"
    }
}
var selfIntroduction: String {
    return "저는 \(self.class)반 \(name)입니다"
}

 

- set-only ??

연산 프로퍼티에는 getter가 필요하다

 

- 예시

struct Student {
	// 연산 프로퍼티
    var westernAge: Int {
        get {
            return koreanAge - 1
        }
        
        set {
            koreanAge = newValue + 1
        }
    }
}


// 인스턴스 생성
var Jenny: Student = Student()
Jenny.koreanAge = 10

print("한국나이: \(Jenny.koreanAge)살 미국나이: \(Jenny.westernAge)살")
// 한국나이: 10살 미국나이: 9살