-1

를 초기화하지 않고 외부에서 게으른 VAR 설정 var 정의. c.exif.a = newExif.a 대신에 어떻게 그것을 피하고 구조체 멤버를 만들 수 있습니까? 스위프트 3.0을 사용하고 있습니다.내가 EXIFData이 구조체이다 게으른 VAR의 정의를 사용하여 클래스를 정의

올린 날짜 : 나는 같은 방법으로 해결 : 나는 게으른 초기화 내 값을 할당하는 데 필요한 정보를 사용합니다. 따라서 내부에 추가로 "if"문이 하나 있습니다. 표준 초기화를 피하기 위해 외부 초과 및 특수 트릭이 필요하지 않습니다.

+0

초기화 프로그램을 호출하지 않는'c.exif = newExif'를 지정할 수 있습니다. –

+0

당신이 그걸 썼을 때 무슨 일이 있었습니까? – matt

+0

나는이 init를 얻었다! 그게 이유야. –

답변

2

평상시 읽기 전에 값을 지정하면 지연 초기 화기가 실행되지 않습니다. 다음은 테스트 케이스입니다.

class Class { 
    lazy var lazyVar: String = { 
     print("Lazy initializer ran") 
     return "Default value" 
    }() 
} 

let object = Class() 
object.lazyVar = "Custom value" 
print(object.lazyVar)