이번엔 연산 프로퍼티에 대해서,,
연산 프로퍼티(Computed Property)
클래스, 구조체, 열거형에서 사용된다. 저장 프로퍼티와 달리 저장 공간을 갖지 않고, 다른 "저장 프로퍼티"의 값을 읽어 연산을 실행하거나, 프로퍼티로 전달받은 값을 다른 프로퍼티에 저장한다. 때문에 항상 var로 선언되어야 한다.
var name: Type {
get { //getter (다른 저장 연산프로퍼티의 값을 얻거나 연산하여 리턴할 때 사용)
statements
return expr
}
set(name) { //setter (다른 저장프로퍼티에 값을 저장할 때 사용)
statements
}
}
연산 프로퍼티의 생김새
get을 getter, set을 setter라 부른다.
연산 프로퍼티는 값을 저장하는 것이 아니기 때문에 타입 추론을 통해 형식을 알 수 없어, 반드시 선언할 때 타입 어노테이션을 통해 자료형을 명시해야한다. 그리고 선언된 자료형 뒤에 {}를 붙이는 것이 연산 프로퍼티의 사용법이다.
따라서, 내가 어떤 타입의 값을 받아서 다른 저장 프로퍼티에 저장할 것인지, 어떤 타입의 값을 리턴할 것인지를 명시해주어야 함
getter는 얻는 것
어떤 저장 프로퍼티의 값을 연산해서 return할 것인지, return 구문이 항상 존재해야한다.
setter는 설정 하는 것
파라미터로 받은 값을 어떤 저장 프로퍼티에 어떻게 설정할 것인지를 구현한다.
원하는 연산을 해서 getter을 작성할 수도, 파라미터로 받은 값을 원하는 연산을 해서 setter을 작성할 수도 있다.
연산 프로퍼티의 사용 방법은 우리가 아무렇지 않게 사용하던 저장 프로퍼티처럼 사용하면 된다.
set의 파라미터는 생략이 가능하다.
set은 파라미터를 받을 때 타입을 명시해주지않는것으로 보여지고 아예 자동완성도 안해주는데
이건 이미 연산 프로퍼티를 선언할 때 alias의 타입을 반드시 명시 해줬기 때문이다.
그리고 set의 파라미터는 단 하나만 존재한다.
set의 파라미터 이름 짓기 힘들면 get처럼 파라미터 받는 부분을 다 날려버려도 된다.
그랬을때 파라미터를 뭘로 접근하냐면 newValue라는 이름으로 접근하면 된다.
연산 프로퍼티를 쓸 때 setter가 필요없다면, getter만 선언해 줄 수 있다.
이것을 get-only라고 한다.
get만 써서 작성해도 되고 더 간편하게 get 구문 자체를 없애서 간단하게 쓸 수도 있다.
get-only에서 set이 없기때문에 그렇게 작성된 것에서 연산 프로퍼티에 값을 넣으려고 하면 get-only라서 값을 할당할 수 없다는 에러가 뜬다.
set-only는 구현할 수 없다.
get, set을 같이 구현하거나, get-only로만 구현해야 한다.
'iOS (스파르타)' 카테고리의 다른 글
CSS회고 (1) | 2024.08.23 |
---|---|
8월 4주 키워드 (0) | 2024.08.21 |
UITableView (UICollectionView 와의 차이점) (2) | 2024.08.14 |
UICollectionView - Basic반 수업 공부 (0) | 2024.08.13 |
Property 정리하기 - 1 (저장 프로퍼티, 지연 저장 프로퍼티) (0) | 2024.08.13 |