Swift泛型和关联类型出现错误

6
以下的Swift代码会让编译器一直崩溃。我错在哪里了?
protocol Props {
    typealias ComponentType: Component<Self>
}

class Component<PropsType: Props> {
}

class FooProps : Props {
    typealias ComponentType = FooComponent<FooProps>
}

class FooComponent<PropsType: Props> : Component<PropsType> {

}

1
编译器崩溃总是一个错误,无论代码正确与否。 - newacct
是的,但这并不意味着我的代码是正确的(我怀疑它不是)——如果代码有误,也许正确的代码不会导致编译器崩溃。而如果代码是正确的,那么我需要一个解决编译器错误的方法。 - igul222
我不知道你的目标是什么,但导致崩溃的是这一行代码 " typealias ComponentType = FooComponent<FooProps>"。我认为这并不必要,因为如果在 Props 中声明一个简单的类型别名,比如 "typealias T = Int",你可以将其用作 FooProps 的嵌套类型。无论如何,我认为你不能使用 "typealias ComponentType = Component<Self>"。尝试运行此语句 "var ComponentType:FooProps.ComponentType = FooComponent()",你会发现程序陷入了一个无限循环中。 - MiguelSlv
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接