프로퍼티와 메소드
Youngminah opened this issue · 0 comments
Youngminah commented
저장 프로퍼티 (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