[Swift] 연산 프로퍼티 Computed Properties

Bibi·2022년 3월 11일
0

[Swift] 연산 프로퍼티 Computed Properties

Swift 프로그래밍 197 ...

프로퍼티 : 클래스/구조체/열거형 등에 관련된 값.

  • 저장 프로퍼티 Stored Properties : 인스턴스의 변수/상수
    • 기존 프로그래밍 언어의 '인스턴스 변수'
  • 연산 프로퍼티 Computed Properties : 특정 연산을 실행한 결괏값
  • 타입 프로퍼티 Type Properties : 특정 타입의 인스턴스가 아닌, 특정 타입에 사용되는 프로퍼티
    • 기존 프로그래밍 언어의 '클래스 변수'

연산 프로퍼티

: 실제 값을 저장하는 프로퍼티가 아니라, 특정 상태에 따른 값을 연산하는 프로퍼티

  • 클래스/구조체/열거형에 정의 가능
  • getter, setter의 역할을 할 수 있음
  • 한 프로퍼티에 getter, setter, 프로퍼티의 역할을 모아 둘 수 있음 - 가독성 높임
  • 메서드 대신 저장 프로퍼티처럼 편하게 사용 가능 (사용자 입장에서)

메서드 vs 연산프로퍼티

  • 메서드가 과도하게 늘어나는 것을 방지
  • 코드 가독성을 높임
  • 연산 프로퍼티가 메서드보다 간편하고 직관적일 수 있음

연산 프로퍼티의 단점

  • 쓰기 전용 상태로 구현할 수 없다
  • (읽기 전용, 읽기&쓰기만 가능)
struct Point {
  var x: Int
  var y: Int
  
  var oppositePoint: Point { // 연산 프로퍼티 - 읽고 쓰기 가능
     get { // getter
        return Point(x: -x, y: -y)
     }
    
     set(newValue) { // setter - setter의 매개변수로 원하는 이름 설정 가능
        x = -newValue.x // newValue는 암시적 전달인자로, (newValue) 생략 가능
        y = -newValue.y
     }
  }
}

struct Point {
  var x: Int
  var y: Int
  
  var oppositePoint: Point { // 연산 프로퍼티 - 읽기 전용
     get { // getter
        Point(x: -x, y: -y) // getter의 코드가 한 줄이고 리턴타입이 프로퍼티 타입과 같다면, return 생략 가능
     }
  }
}

0개의 댓글