Swift

[Swift] property의 값을 가지고와 다른 property의 값에 넣어주자 : lazy var

insub4067 2022. 7. 17. 23:48

lazy 라는 키워드는 해당 property가 호출될때 실행된다

 

말인 즉슨

SomeClass의 instance가 생성이 된다면 someString에 값이 들어간다

그 시점에 someStringOfsomeString의 값은 할당 되어 있지 않았다.

 

하지만 instance.someStringOfsomeString이라고 호출하면 그제서야

값이 할당이 되어 호출이 된다.

 

말인 즉슨 같은 class 내 다른 property의 값도 가지고와 쓸수 있다는 말이다.

 

왜 lazy가 아니면 다른 property의 값을 가져다 쓸수 없을까?

 

그것은 init되는 시점에 다른 property 들의 값이 다 들어가 있지 않을수도 있고

버그를 일으킬 가능성이 많기 때문에 애초에 막아 놓은거 같다.

 

그리고 또 언제 사용할수 있을까?

SwiftUI를 사용해서 View를 그릴때

body 위에다가 가져다쓸 data들을 property로 선언한다

하지만 다른 property의 값을 가져다 property에 값으로 넣기가 어렵다

그때 쓰면 됨! ㅋ

 

아마 될껄? 아직 안해봣음 ㅎ

import SwiftUI

class SomeClass {
    
    let someString: String = "Some String"
    
    lazy var someStringOfsomeString: String = "\(someString) of Some String"
}