Eşanlamlılık Swift'de Optional
s için nasıl çalışır?İsteğe bağlı eşanlamlılık Swift'de nasıl çalışır?
var nativeOptionalView: Optional<UIView>
let button = UIButton()
nativeOptionalView = .Some(button)
var nativeOptionalButton = Optional.Some(button)
nativeOptionalView = nativeOptionalButton
hazırlar ve gayet güzel çalışıyor:
Aşağıdaki kodu yazmak Say. Aşağıdakienum MyOptional<T> {
case Some(T)
case None
}
olarak MyOptional
tanımlamak Ve yazma Ancak eğer: 'Bu hatalar MyOptional
ile bunun neden ben don anlamak
error: cannot assign value of type '
MyOptional<UIButton>
' to type 'MyOptional<UIView>
'
:
var myOptionalView: MyOptional<UIView>
let button = UIButton()
myOptionalView = .Some(button)
var myOptionalButton = MyOptional.Some(button)
myOptionalView = myOptionalButton
hatası alıyorum Anlamak, neden
Optional
ile olmuyor.
Yanıtın "derleyici büyüsü" olduğundan şüpheliyim. – jtbandes
Korktum:/Bu durumda, açık kaynak olarak düşünülürse, bu sihir nerede? – fpg1503
Emin değilim; Kod tabanı oldukça büyük. Başlangıç noktası: https://github.com/apple/swift/search?utf8=%E2%9C%93&q=optional+covariant – jtbandes