Youngminah/TIL

프로퍼티와 메소드

Youngminah opened this issue · 0 comments

image

저장 프로퍼티 (Stored Property)

  • 상수(constant)와 변수(variable)값을 인스턴스의 일부로 저장
  • 클래스와 구조체에서만 사용된다.
  • 지연 저장 프로퍼티도 있는데 추후 따로 정리
  • 구조체에서 저장 프로퍼티
struct FixedLengthRange {
    var firstValue: Int // 변수 저장 프로퍼티
    let length: Int // 상수 저장 프로퍼티
}
var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)
  • 클래스에서 저장 프로퍼티
class FixedLengthRange {
    var firstValue: Int
    let length: Int

    init(firstValue : Int, length:Int) {
        self.firstValue = firstValue
        self.length = length
    }
}

var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)

연산 프로퍼티 (Computed Property) ⭐️

  • 값을 저장하기보다는 연산
  • getter setter들이 연산 프로퍼티
  • 클래스, 구조체 그리고 열거형에서 사용
  • var로 선언해야한다.
  • get, set을 동시에 구현 가능하며, get만 구현하는 것도 가능. 하지만 set만 구현하는 것은 안된다!
  • set의 파라미터를 생략할 수 있으며 생략했을 시, newValue라는 키워드를 사용한다.

타입 프로퍼티 (Type Property)

  • 타입 프로퍼티는 타입 정의의 "일부로" 타입의 외부 중괄호 안에 쓰여지며,
  • 각 타입 프로퍼티는 명시적으로 지원하는 타입으로 범위가 지정되게 된다.
  • "static"키워드를 사용하여 타입 프로퍼티를 정의할 수 있다.
  • 저장&연산 프로퍼티 앞에 "static"이란 키워드만 붙이면,
  • 그것은 저장 타입 프로퍼티 & 연산 타입 프로퍼티가 되는 것
  • 모든 타입이 공통적인 값을 정의하는 데 유용
class Human {    
   static let name: String = "sodeul"     // 저장 타입 프로퍼티    
   static var alias: String {             // 연산 타입 프로퍼티        
      return name + "은 바보"    
   }
}

Computed Property vs Method

  • Property : 호출시 (저장된) 값을 하나 반환
  • Method : 호출시 어떤 작업을 함 또는 값을 리턴하는 작업도 가능.

둘 중에 어떤걸 이용하여야할까? ⭐️

  • setter가 필요하면 Computed Property
  • setter가 필요하지 않은데, 계산이나 여러가지 디비, 네트워크 등 복잡한 기능이 들어간다면 Method, 간단하다면 Computed Property