[TIL] 연산 프로퍼티(Computed Property)

술술·2024년 3월 5일

TIL

목록 보기
3/21
  • 클래스, 구조체, 열거형에서 사용
  • 저장 프로퍼티와 달리 저장 공간을 갖지 않는다.
  • 다른 ‘저장 프로퍼티’의 값을 읽어 연산을 실행하거나, 프로퍼티로 전달받은 값을 다른 프로퍼티에 저장한다.
  • 반드시 선언할 때 타입 어노테이션을 통해 자료형을 명시해야 함
  • 선언된 자료형 뒤에 {}를 붙이는 것이 사용법
  • get : 얻는 것
    • 어떤 저장 프로퍼티의 값을 연산해서 return할 것인지, return 구문이 항상 있어야 함
  • set : 설정 하는 것
    • 파라미터로 받은 값을 어떤 저장 프로퍼티에 어떻게 설정할 것인지
  • 읽거나 쓸 수 있는 ‘저장 프로퍼티’가 먼저 존재해야 하고, ‘연산 프로퍼티’에서는 다른 저장 프러퍼티의 값을 읽거나 쓰는 작업을 해야한다.
class Person {
    var name: String = "Sodeul"
 
    var alias: String {
        get {
            return self.name + " 바보"
        }
        set(name) {
            self.name = name + "은 별명에서 지어진 이름"
        }
    }
}
 

let sodeul: Person = .init()
 
// get에 접근
print(sodeul.alias)             // Sodeul 바보
 
// set에 접근
sodeul.alias = "소들"
print(sodeul.name)              // 소들은 별명에서 지어진 이름

  • set은 파라미터를 받을 때 왜 타입을 명시해주지 않아?

    • 이미 연산 프로퍼티를 선언할 때 타입은 명시해줬기 때문에 set으로 들어오는 파라미터는 명시된 타입일 것
    • set의 파라미터는 단 하나만 존재한다.
    • 파리미터 받는 부분을 적지 않아도 된다.
      • 그럼 어떻게 접근?
        • newValue
    • set만 쓸 수는 없다.
  • get - only는 가능

profile
Hello

0개의 댓글