🦜 Swift

[Swift] 프로퍼티

ji-hyun 2022. 11. 20. 16:50
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