6
以下Swift代碼會重複崩潰編譯器。我錯過了什麼?Swift泛型和相關類型的錯誤
protocol Props {
typealias ComponentType: Component<Self>
}
class Component<PropsType: Props> {
}
class FooProps : Props {
typealias ComponentType = FooComponent<FooProps>
}
class FooComponent<PropsType: Props> : Component<PropsType> {
}
編譯器崩潰總是一個錯誤,無論代碼可能是正確還是錯誤 – newacct 2014-09-26 18:25:39
是的,但這並不意味着我的代碼是正確的(我懷疑它不是) - 如果代碼是錯了,也許正確的代碼不會導致編譯器崩潰。如果代碼是正確的,那麼我需要一個解決該編譯器bug的解決方法 – igul222 2014-09-26 18:51:48
我不知道你的目標是什麼,但是導致崩潰的原因是「typealias ComponentType = FooComponent」 I don' t認爲它是必須的,因爲如果你在Props中聲明瞭一個簡單的類型別名,比如「typealias T = Int」,你可以使用它作爲嵌套類型的FooProps。 無論如何,我認爲你不能使用「typealias ComponentType = Component 」 嘗試運行這個語句「var ComponentType:FooProps.ComponentType = FooComponent()」,你會看到程序運行到一個不定式循環中。 –
ByteArtisan
2014-10-03 11:05:59