프로퍼티(property)
프로퍼티
- 구조체, 클래스, 열거형 내부에 구현할 수 있음
- 열거형 내부에는 연산 프로퍼티만 구현할 수 있음
- 연산 프로퍼티는 var로만 선언할 수 있음
- 저장 프로퍼티(stored property), 연산 프로퍼티(computed property), 인스턴스 프로퍼티(instance property), 타입 프로퍼티(type property)가 있음
struct Student {
// 인스턴스 저장 프로퍼티
var name: String = ""
var 'class': String = "Swift"
car koreanAge: Int = 0
// 인스턴스 연산 프로퍼티
- 특정한 연산을 수행하기 위한 프로퍼티
var westernAge: Int {
get {
return koreanAge - 1
}
set(inputValue) {
koreanAge = inputValue + 1
}
// 타입 저장 프로퍼티
static var typeDescription: String = "학생"
// 읽기 전용 인스턴스 연산 프로퍼티
- get만 구현되어 있으면 읽기 전용, 쓰기 전용은 안됨(읽기와 쓰기 두 개는 가능)
var selfIntroduction: String {
get {
return "저는 \(self.class)반 \(name)입니다"
}
// 읽기 전용 타입 연산 프로퍼티
- 읽기 전용에서는 get을 생략할 수 있음
static var selfIntroduction: String {
return "학생 타입입니다"
}
// 타입 연산 프로퍼티
print(Student.selfIntroduction) // 학생 타입입니다
// 인스턴스 생성
var khon: Student = Student()
khon.koreanage = 10
// 인스턴스 저장 프로퍼티
khon.name = "khon"
print(khon.name) // khon
// 인스턴스 연산 프로퍼티
print(khon.selfIntroduction) // 저는 Swift반 khon입니다
print("제 한국 나이는 \(khon.koreanAge) 살이고, 미국 나이는 \(khon.westernAge) 살입니다)
* 저장 프로퍼티와 연산 프로퍼티의 기능은 함수, 메서드, 클로저, 타입 등의 외부에 위치한 지역 / 전역 변수에도 모두 사용 가능
var a: Int = 100
var b: Int = 200
var sum: Int {
return a + b
}
print(sum) // 300