Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何实现符合相互关联协议之一的泛型类?_Swift_Generics_Protocols - Fatal编程技术网

Swift 如何实现符合相互关联协议之一的泛型类?

Swift 如何实现符合相互关联协议之一的泛型类?,swift,generics,protocols,Swift,Generics,Protocols,我有两个协议。每个(x)都包含associatedtype,当该协议的associatedtype(y)等于Self(属于x)时,需要确认另一个协议(y) 协议B{ 关联类型AA:A 其中AA.BB==Self } A方案{ 关联类型BB:B 其中BB.AA==Self } 按照以下方式实施这些协议没有问题: AAA级:A{ 类型别名BB=BBB } BBB类:B{ 类型别名AA=AAA } 但我不能将其中的一个实现为泛型 AAA级:A{ 类型别名BB=BBBB } BBB类:B{ 类型别名

我有两个协议。每个(x)都包含
associatedtype
,当该协议的
associatedtype
y)等于
Self
(属于x)时,需要确认另一个协议(y

协议B{
关联类型AA:A
其中AA.BB==Self
}
A方案{
关联类型BB:B
其中BB.AA==Self
}
按照以下方式实施这些协议没有问题:

AAA级:A{
类型别名BB=BBB
}
BBB类:B{
类型别名AA=AAA
}
但我不能将其中的一个实现为泛型

AAA级:A{
类型别名BB=BBBB
}
BBB类:B{
类型别名AA=AAA
}
因此,我有一个错误:

“A”要求“AAA”和“BBBB.AA”类型等效

并请注意:

要求指定为“Self”==“Self.BB.AA”[带Self=AAA]

听起来可以理解。我在泛型类中添加了约束

AAA类:其中BBBB.AA==AAA{
类型别名BB=BBBB
}
和结果

错误:类型“AAA”不符合协议“A”
注:协议要求嵌套类型“BB”;您想添加它吗

错误:类型“BBB”不符合协议“B”
注:协议要求嵌套类型“AA”;您想添加它吗

我所有的尝试都没有成功,他们只是更改了错误消息。

有可能吗?怎么做?

以我目前的知识,我认为不可能做你想做的事。 我在寻找更多的信息,我找到了一些关于为什么不需要它的信息