Swift 프로그래밍 197 ...
프로퍼티 : 클래스/구조체/열거형 등에 관련된 값.
: 실제 값을 저장하는 프로퍼티가 아니라, 특정 상태에 따른 값을 연산하는 프로퍼티
메서드 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 생략 가능
}
}
}