내 속성에서 반환하기 전에 값을 속성에 할당하려고합니다. 다음에 액세스 할 때 nil
인지 확인한 후 다시 지정하거나 인스턴스를 리턴합니다.null-coalescing 연산자 및 재 생성 가능 속성에 대한 할당의 단축형입니까?
이 내가 지금하고 있어요 방법은 다음과 같습니다
private var _myProp: MyInstance?
public var myProp: MyInstance {
if _myProp == nil {
_myProp = MyInstance()
}
return _myProp!
}
이 같은 매우 취소 스위프트을보고이 일을 더 우아한 방법을 기대했다. 나는 그것을 해제 할 수 있도록 속성 다시는 generatable 수 있도록하기 위해 노력하고있어
private var _myProp: MyInstance?
public var myProp: MyInstance {
return _myProp ?? (_myProp = MyInstance())
}
하지만 다음 번에 그것을 다시 한번 인스턴스를 생성합니다 액세스 할 수 있습니다 : 예를 들어, C#
에서 나는이 작업을 수행 할 수 있습니다.
스위프트에서 이와 비슷한 것은 무엇입니까?
private var _property: MyClass? = nil
public var property: MyClass {
if let property = _property {
return property
} else {
let property = MyClass()
_property = property
return property
}
}
그것은 아마도 당신이 좋아하는 것보다 더 자세한하지만 그 대가로 나는 그것이 매우 분명하다 생각 :
당신의 대답에 비추어
내부 속성을 'nil'으로 재설정해야합니까? –
'lazy var myProp = MyInstance()'는 어떻습니까? - 편집 : 아마 조쉬가 생각하는 것일 것입니다. –
그러나 myProp = nil을 어딘가에 만들면 올바른 인스턴스가 다시 생성되지 않을까요? 속성을 re-generatable로 만들려고하므로'nil'으로 만들면 다시 인스턴스를 자동으로 만듭니다. – TruMan1