Swift/문법

프로퍼티(property)

khon98 2021. 1. 28. 22:42

프로퍼티

- 구조체, 클래스, 열거형 내부에 구현할 수 있음

- 열거형 내부에는 연산 프로퍼티만 구현할 수 있음

- 연산 프로퍼티는 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