Swift 프로그래밍 언어에서 사용하는 두 가지 프로퍼티 유형입니다. 이 두 프로퍼티는 클래스나 구조체에서 객체의 데이터를 저장하거나 계산하는 역할을 합니다.
저장 프로퍼티 (Stored Property)
정의: 저장 프로퍼티는 변수 또는 상수로 선언되어, 객체의 인스턴스에 특정 값을 저장하는 역할을 합니다. 객체가 생성될 때 메모리에 공간이 할당되고, 저장된 값을 변경하거나 참조할 수 있습니다.
변경 가능 여부: var로 선언된 저장 프로퍼티는 변경 가능하며(mutable), let으로 선언된 저장 프로퍼티는 한 번 초기화된 후 변경할 수 없습니다(immutable).
struct Person {
var name: String // 저장 프로퍼티
let birthYear: Int // 상수 저장 프로퍼티
}
var person = Person(name: "John", birthYear: 1990)
person.name = "Jane" // 변경 가능
// person.birthYear = 1985 // 오류 발생: 상수 프로퍼티는 변경 불가
연산 프로퍼티 (Computed Property)
정의: 연산 프로퍼티는 값을 저장하지 않고, 대신 다른 저장 프로퍼티나 연산을 기반으로 값을 계산하는 프로퍼티입니다. 계산된 값을 반환할 때마다 다른 속성이나 계산을 기반으로 값을 동적으로 반환합니다.
특징: 저장 공간 없음: 연산 프로퍼티는 저장 공간을 갖지 않으며, 값을 저장하는 대신 매번 계산합니다.
읽기/쓰기 가능: 읽기 전용(read-only)일 수도 있고, 읽기와 쓰기(read-write)가 모두 가능할 수도 있습니다. get과 set 블록을 사용해 계산식을 정의합니다.
struct Rectangle {
var width: Double
var height: Double
// 연산 프로퍼티: 사각형의 넓이를 계산하여 반환
var area: Double {
return width * height
}
// 연산 프로퍼티: 사각형의 가로, 세로를 이용해 둘레를 계산하고, 값 설정 시 가로와 세로 비율을 유지
var perimeter: Double {
get {
return (width + height) * 2
}
set(newPerimeter) {
width = newPerimeter / 4
height = newPerimeter / 4
}
}
}
var rect = Rectangle(width: 10, height: 5)
print(rect.area) // 출력: 50.0
print(rect.perimeter) // 출력: 30.0
rect.perimeter = 40 // 둘레를 40으로 설정
print(rect.width) // 출력: 10.0
print(rect.height) // 출력: 10.0
요약
저장 프로퍼티: 객체의 데이터를 저장하는 프로퍼티. 메모리에 직접 저장되며 초기화가 필요함.
연산 프로퍼티: 값을 저장하지 않고, 계산하여 값을 반환하는 프로퍼티.get과 set 블록을 사용해 계산식을 정의함.
'Swift '문법'' 카테고리의 다른 글
protocol [프로토콜] (2) | 2024.09.25 |
---|---|
상수/변수 (0) | 2024.08.26 |
Closure '클로저' (0) | 2024.08.20 |
MVC패턴 (0) | 2024.08.16 |
비동기(Asynchronous),네트워킹(Networking) (0) | 2024.08.14 |