struct Student {
// 인스턴스 저장 프로퍼티
var name: String = ""
var `class`: String = "Swift"
var koreanAge: Int = 0
// 인스턴스 연산 프로퍼티
var westernAge: Int {
get {
return koreanAge - 1
}
set(inputValue) {
koreanAge = inputValue + 1
}
}
// 타입 저장 프로퍼티
static var typeDescription: String = "학생"
// 인스턴스 메서드
// func selfIntroduce() {
// print("저는 \(self.class)반 \(name)입니다")
// }
// 읽기전용 인스턴스 연산 프로퍼티
var selfIntroduction: String {
get {
return "저는 \(self.class)반 \(name)입니다"
}
}
// 타입 메서드
// static func selfIntroduce() {
// print("학생타입입니다")
// }
// 읽기전용 타입 연산 프로퍼티
static var selfIntroduction: String {
return "학생타입입니~다"
}
}
var jihyun: Student = Student()
jihyun.name = "jihyun"
print(jihyun.selfIntroduction) // 저는 Swift반 jihyun입니다
jihyun.koreanAge = 26
print(jihyun.westernAge) // get 메서드 호출됨 --> 25
jihyun.westernAge = 30 // set 메서드 호출됨
print(jihyun.koreanAge) // 31
// 응용
struct Money {
var currencyRage: Double = 1100
var dollar: Double = 0
var won: Double {
get {
return dollar * currencyRage
}
set {
dollar = newValue / currencyRage
}
}
}
var moneyInMyPocket = Money()
moneyInMyPocket.won = 11000 // >> dollar: 11000 / 1100
print(moneyInMyPocket.dollar) // 10
print(moneyInMyPocket.won) // 10 * 1100 -> 11000
저장 프로퍼티와 연산 프로퍼티의 기능은 함수, 메서드, 클로저, 타입 등의 외부에 위치한 지역/전역 변수에도 모두 사용 가능하다
var a: Int = 100
var b: Int = 200
var sum: Int { //
return a + b
}
print(sum)
'🦜 Swift' 카테고리의 다른 글
[Swift] 상속 (0) | 2022.11.20 |
---|---|
[Swift] 프로퍼티 감시자 (0) | 2022.11.20 |
[Swift] 클로저 (0) | 2022.11.20 |
[Swift] 열거형 (0) | 2022.11.19 |
[Swift] 클래스 (0) | 2022.11.19 |