변수에 대해서

2022. 6. 2. 12:32swift

변수란?

- 어떠한 서랍장 속에 값을 저장하는것

1번서랍장에 1, 2번서랍장에 2 이런식으로 생각하면된다.

변수는 담을 수 있는 값의 종류가 다르고 그 값의 제한이 각각 다르게 되어 있다.

 

전역변수

- 어디에서든지 사용할 수 있는 변수

var a = "good"     a = 전역 변수  함수 밖에 정의된 변수 를 전역변수라 한다.

지역변수

- 지역변수는 함수 내에서 특정 동작을 하고 그 값을 다른 곳으로 전달하거나 없어지는 경우 사용

 

var one = "good"

// 함수 밖에 있는 One 전역변수

func two() {

    var one = "god"    // one 함수내에 있는 변수 지역변수

    print(one)

}

two()   == 출력값 god 

//  함수내에 지역변수가 없었더라면 전역 변수가 출력된다

 

포로퍼티옵저버

-특정 프로퍼티를 관찰하고 프로퍼티 값이 변경되면 반응한다.

 

프로퍼티 옵저버는 willSet 과 didSet 으로 나뉜다.

willSet - 프로퍼티의 값이 변경되기 직전에 호출되는 옵저버

             -(값이 저장되기 직전 호출)

didSet - 프로퍼티의 값이 변경된 직후에 호출되는 옵저버

             -(새로운 값이 저장된 직후 호출)

 

예시) 만보기 카운트

class stepCounter {

    var totlaSteps: Int = 0 {

        willSet(newTotalSteps) {

            print("totalSteps을\(newTotalSteps)로 설정")

        }

        didSet(oldTotalSteps) {

            if totlaSteps > oldTotalSteps {

                print("\(totlaSteps - oldTotalSteps)걸음이 추가된다.")

            }

        }

    }

}

//let stepCounter = stepCounter()

//stepCounter.totlaSteps = 200 값을 200으로 입력시 

TotalSteps  200

oldTotalSteps 200 == (설정 하기전 값은 "0"이다  허나 didSet이 작동하여 

TotalSteps  200 - o ldTotalSteps 0 을 뺀 200걸음이 추가 된다.

stepCounter.totlaSteps = 360 입력시

TotalSteps  360

oldTotalSteps 160 (설정하기 이전의 값이 저장되있다.

설정 전 값이 200이 였으니  이번 360을 줌으로써 360 -200 인 160이 출력된다.

 

그렇다 willSet, didSet 을 이렇게 쓴다

willSet 은 변경하면 그대로 출력 하지만

didSet 은 변경하기전 그값과 변경된 값을 계산한후에 출력 한다.

 

 

'swift' 카테고리의 다른 글

딕셔너리를 알아보자  (0) 2022.06.06
함수  (0) 2022.06.02
옵셔널에 관하여  (0) 2022.06.02
배열에 관하여  (0) 2022.06.02
옵셔널 바인딩이란?  (0) 2022.05.09