스위프트의 일부 속성에 게으른 초기화를 사용하고 싶습니다. 나의 현재 코드는 다음과 같습니다게으른 Var 대 Let
lazy var fontSize : CGFloat = {
if (someCase) {
return CGFloat(30)
} else {
return CGFloat(17)
}
}()
건은 fontSize는 설정되면이 절대 변하지 않을 것입니다. 그래서 다음과 같이하고 싶습니다.
lazy let fontSize : CGFloat = {
if (someCase) {
return CGFloat(30)
} else {
return CGFloat(17)
}
}()
어느 것이 불가능합니다.
만이 작동합니다
let fontSize : CGFloat = {
if (someCase) {
return CGFloat(30)
} else {
return CGFloat(17)
}
}()
그래서 - 나는로드 게으른하지만 절대 변하지 않을 것입니다 속성을합니다. 올바른 방법은 무엇입니까? let
을 사용하고 게으른 초기화에 대해 잊어 버리시겠습니까? 또는 lazy var
을 사용해야하고 속성의 일정한 특성을 잊어 버려야합니까?
동의합니다. - 신속한 게으름이 필요합니다. 게으른 var 패턴의 또 다른 문제점 (값이 변하지 않을 것임)은 오브젝트를 돌연변이하는 것으로 처음으로 속성을 읽는 것 (내부적으로는 변경 - 지연 값이 저장 됨)이지만 외부 코드 외부 코드 관점에서 객체가 변경되지 않더라도 객체를 var로 선언해야합니다. –
당신이 얻을 수있는'lazy'만이'var'(스위프트 2.1 현재)와 함께있는 것입니다. 플로트 할당이라면 게으름에 대해 걱정할 필요가 없습니다. 특히 액세스 할 것이라는 것을 절대적으로 알고 있다면 특히 – bshirley