전역변수 vs lazy

이건준·2023년 3월 31일
0

문제제기

  • 이전 포스트에서 가장 궁금했던것중에 하나가 전역변수는 지연적으로 할당되는데 그렇다면 굳이 lazy라는 키워드는 왜 필요한 것인가 ??

  • 코딩을 하다보면 아는 부분이겠지만 lazy를 써야만 하는 경우가 분명히 존재하는데 그 차이가 무엇일까 ??

문제해결

  • 전역변수가 메모리에 올라가는 시점이 실제로 사용될때 올라가는게 아니라 기존 데이터영역에 올라가는 시기처럼 프로그램이 시작할때 올라가는 것이고 지연적인 동작은 해당 전역변수가 초기화되는 시점이 실제로 사용할때 초기화된다는 것이다 !!!!
lazy var lazyVar: Int = {
    print("Initializing lazyVar")
    return 10
}()

func someFunc() {
    print("Inside someFunc")
}

print("Before calling someFunc")
someFunc()
print("After calling someFunc")

print(lazyVar)

즉 결론은 전역변수와 lazy 변수의 차이는 전역변수는 프로그램 시작과 동시에 메모리에 올라가지만 실제로 사용되기전까지 초기화되지않고 lazy 변수는 실제로 사용되기전까지 메모리위에조차 올라가지않는 것이다

0개의 댓글