계산속성

쏘스야·2023년 4월 13일
0

ios 개발자의 첫걸음

목록 보기
46/61
/**
 함수 복습
 */
func addTwoNumbers(_ a: Int, _ b: Int) -> Int {
    var c = a + b
    return c
}


var x = addTwoNumbers(3, 4)

var y = addTwoNumbers(5, 6)



/**
 클래스 복습
 */

class Dog {
    var name: String
    var weight: Int
    
    init(name: String, weight: Int){
        self.name = name
        self.weight = weight
    }
    
    func sit(){
        print("\(name), 앉아!!")
    }
    
    func layDown() {
        print("\(name), 누워!!")
    }
}



/**
 계산속성(Computed Properties)
 - 다른 저장 속성에 의한 결과로 계산해 나오는 방식의 메서드인 경우
 - 아예 속성처럼 만들 수 있다.( ---> 계산 속성)
 */

class Person {
    var birth: Int = 0
    
    // 계산 속성
    var age: Int {
        get {
            return 2023 - birth
        }
        // set 은 구현 해도되고 안해도 됌.
//        set(age) {
//            self.birth = 2023 - age
//        }
        // newValue == parameter
        set {
            self.birth = 2023 - newValue
        }
    }
    
    // get 블럭만 있는 속성
    var age1: Int {
        return 2023 - birth
    }
    
//    func getAge() -> Int {
//        return 2023 - birth
//    }
//    func setAge(_ age: Int) {
//        self.birth = 2023 - age
//    }
}

var p1 = Person()
p1.birth = 1997

// get
p1.age
p1.birth
// set
p1.age = 20

// get
p1.age
p1.birth


class Person1 {
    var name: String = "사람"
    var height: Double = 160.0
    var weight: Double = 60.0
    
    // 계산속성
    var bmi: Double {
        get {   // getter
            let bmi = weight / (height * height) * 10000
            return bmi
        }
        set {   // setter
            weight = newValue * height * height / 10000
        }
//        set(bmi) {
//            weight = bmi * height * height / 10000
//        }
    }
    
//    calculateBMI() -> Double {
//        let bmi = weight / (height * height) * 10000
//        return bmi
//    }
}


let p2 = Person1()
p2.height = 175
p2.weight = 76

p2.bmi

p2.bmi = 24

p2.weight
profile
개발자

0개의 댓글