Swift/Swift 기초문법
[Swift 기초문법 - 61] get Computed Property
힛해
2024. 8. 21. 00:09
728x90
Computed Property란?
Computed Property는 클래스, 구조체, 열거형에서 값을 저장하지 않고, 간접적으로 값을 계산하여 반환하는 속성을 뜻한다.
Stored Properties와 달리 Computed Properties는 값이 직접 저장되지 않고, 매번 접근할 때마다 특정 연산을 통해 값을 반환한다.
기본 구문
Swift에서 Computed Properties는 get 블록과 set 블록(선택사항) 으로 구성된다.
struct Rectangle {
var width: Double
var height: Double
var area: Double {
get {
return width * height
}
set {
width = sqrt(newValue)
height = sqrt(newValue)
}
}
}
만약 get만 사용하고 set이 필요 없을 때는 get 블록을 생략할 수 있다.
struct Circle {
var radius: Double
var diameter: Double {
return radius * 2
}
}
읽기 전용 Computed Property
Computed Property가 읽기 전용일 경우, 값을 반환하는 get 블록만 있으면 된다.
struct Triangle {
var base: Double
var height: Double
var area: Double {
return (base * height) / 2
}
}
하지만 set 블록이 없기 때문애 값을 수정할 수는 없다.
get과 set의 활용
읽기와 쓰기가 가능한 Computed Property는 get과 set 모두 가질 수 있다.
get 은 속성을 읽을 때 호출되고, set은 값을 할당할 때 호출됩니다.
struct Temperature {
var celsius: Double
var fahrenheit: Double {
get {
return celsius * 9 / 5 + 32
}
set {
celsius = (newValue - 32) * 5 / 9
}
}
}
클래스 내부 함수 접근을 통한 값 변경
내부 함수를 활용해 값을 변경할 수 있다.
class Sword {
// 내구도
var durability : Int = 100
var itemInfo : String {
switch durability {
case 50...100:
return "음~ 아주 명검이야 후후후"
case 10...50:
return "아직 쓸만 하군"
default:
return "더 이상 쓸 것이 못 된다..."
}
}
func attackMonster(){
self.durability -= 40
}
}
let mySword = Sword()
mySword.attackMonster()
mySword.itemInfo
mySword.attackMonster()
mySword.itemInfo
mySword.attackMonster()
mySword.itemInfo