swift computed property 연산 프로퍼티Language/Swift2022. 8. 23. 14:07
Table of Contents
42seoul에서 공부한 c, c++에서 사용해본 적이 없는 개념이었습니다.
클래스와 구조체에서 자주 사용했던 저장 프로퍼티 외에도 연산 프로퍼티라는 게 등장하였으니, 간략하게 알아보려 합니다.
computed property란??
저장 프로퍼티와 같지만, 실제 값을 저장하는 것이 아닌 다른 프로퍼티의 값을 연산 처리하여 간접적으로 값을 제공합니다.
get 구문을 통해서 함수와 비슷하게 return 값을 반환하며, set 구문을 사용하여 연산 프로퍼티에 값을 할당하거나 변경하고자 할 때 사용되는 구문입니다. 실질적으로 값이 저장을 하지는 않습니다. 또한, set 구문은 생각이 가능합니다.
우선 구조를 확인하고, 코드를 통해서 알아보도록 하겠습니다.
class/struct/enum 객체명 {
...
var 프로퍼티명: 타입 {
get {
필요한 연산 과정
return 반환값
}
set(매개변수명) {
필요한 연산구문
}
}
}
import Foundation
struct UserInfo {
var birth: Int!
var thisYear: Int! {
get {
let df:DateFormatter = DateFormatter()
df.dateFormat = "yyyy"
return Int(df.string(from: Date()))
}
}
var age: Int {
get {
return (self.thisYear - self.birth) + 1
}
}
}
let info: UserInfo = UserInfo(birth: 1980)
print(info.age)
날짜 관련 함수 참고 : 2022.08.23 - [Swift] - swift date, dateFormatter 날짜 구하기
struct Position {
var x: Double = 0.0
var y: Double = 0.0
}
struct Size {
var width: Double = 0.0
var height: Double = 0.0
}
struct Rect {
var origin = Position()
var size = Size()
var center: Position {
get {
let centerX = self.origin.x + (self.size.width / 2)
let centerY = self.origin.y + (self.size.height / 2)
return Position(x: centerX, y: centerY)
}
set(newCenter) {
self.origin.x = newCenter.x + (size.width / 2)
self.origin.y = newCenter.y + (size.height / 2)
}
}
}
let s = Size(width: 10.0, height: 10.0)
var square = Rect(size: s)
print(square.center.x, square.center.y)
// 5.0 5.0
연산 프로퍼티의 get, set 구문은 C#에서 빌려온 개념으로
get, set 구문과 연산 프로퍼티에 대해서 깊게 알고 싶다면, C#의 프로퍼티에 대해서 알아보면 될 거 같습니다
'Language > Swift' 카테고리의 다른 글
swift property observer (0) | 2022.08.23 |
---|---|
swift date, dateFormatter 날짜 구하기 (0) | 2022.08.23 |
swift nested function (0) | 2022.08.22 |
swift defer 블록 (0) | 2022.08.22 |
[Swift] continue, fallthrough-switch, where-for, enumerated, zip, indices (0) | 2022.08.07 |
@jaewpark :: 코스모스, 봄보다는 늦을지언정 가을에 피어나다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!