Day 9 - 2023.01.13
프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있고, 타입과 연관된 값들을 표현할 때 사용한다.
strcut Student {
// 인스턴스 저장 프로퍼티
var name: String = ""
var `class`: String = "Swift"
var koreanAge: Int = 0
}
strcut Student {
// 인스턴스 연산 프로퍼티
var westernAge: Int {
get {
return koreanAge - 1
}
set(inputValue) {
koreanAge = inputValue + 1
}
}
}
// 인스턴스 생성
var jamong: Student = Student()
jamong.koreanAge = 10
print("제 한국나이는 \(jamong.koreanAge)살이고, 미국나이는 \(jamong.westernAge)살입니다.")
// 출력 : 제 한국나이는 10살이고, 미국나이는 9살입니다.
strcut Student {
// 타입 저장 프로퍼티
static var typeDescription: String = "학생"
}
strcut Student {
// 읽기전용 인스턴스 연산 프로퍼티
var selfIntroduction: String {
get {
return "저는 \(self.class)반 \(name)입니다."
}
}
// 읽기전용에서는 get을 생략할 수 있다.
var selfIntroduction: String {
return "저는 \(self.class)반 \(name)입니다."
}
// 인스턴스 저장 프로퍼티 사용
jamong.name = "jamong"
print(jamong.name) // 출력 : jamong
// 인스턴스 연산 프로퍼티 사용
print(jamong.selfIntroduction) // 출력 : 저는 Swift반 jamong입니다.
strcut Student {
// 읽기전용 인스턴스 연산 프로퍼티
static var selfIntroduction: String {
get {
return "학생타입입니다."
}
}
// 읽기전용에서는 get을 생략할 수 있다.
static var selfIntroduction: String {
return "학생타입입니다."
}
print(Student.selfIntroduction) // 출력 : 학생타입입니다.
struct Money {
// 인스턴스 저장 프로퍼티
var currencyRate: Double = 1100
var dollar: Double = 0
// 인스턴스 연산 프로퍼티
var won: Double {
get {
return dollar * currencyRate
}
set {
dollar = newValue / currencyRate
}
}
}
var moneyInMyPocket = Money()
moneyInMyPocket.won = 11000
print(moneyInMyPocket.won) // 출력 : 11000
moneyInMyPocket.dollar = 10
print(moneyInMyPocket.won) // 출력 : 11000
저장 프로퍼티와 연산 프로퍼티의 기능은 함수, 메서드, 클로저, 타입 등의 외부에 위치한 지역/전역 변수에도 모두 사용 가능하다.
var a: Int = 100
var b: Int = 200
var sum: Int {
return a + b
}
print(sum) // 출력 : 300