我有两个协议。其中每个( x )包含associatedtype
,当该协议{<1> y < / strong>)等于associatedtype
(等于 x )。
Self
实现这些协议如下是没有问题的:
protocol B {
associatedtype AA: A
where AA.BB == Self
}
protocol A {
associatedtype BB: B
where BB.AA == Self
}
但是我不能将其中之一实现为通用。
class AAA: A {
typealias BB = BBB
}
class BBB: B {
typealias AA = AAA
}
结果,我有一个错误:
“ A”要求类型“ AAA”和“ BBBB.AA”相等
并注意:
指定为'Self'=='Self.BB.AA'的要求[Self = AAA]
声音可以理解。我将约束添加到我的通用类中。
class AAA<BBBB: B>: A {
typealias BB = BBBB
}
class BBB: B {
typealias AA = AAA<BBB>
}
结果
错误:类型'AAA'不符合协议'A'
注意:协议要求嵌套类型为“ BB”;您要添加吗?错误:类型'BBB'不符合协议'B'
注意:协议要求嵌套类型为“ AA”;您要添加吗?
我解决该问题的所有尝试均未成功,只是更改了错误消息。
有可能吗?怎么样?
答案 0 :(得分:0)
以我目前的知识,我认为不可能做自己想做的事。 我一直在寻找更多信息,但我发现了其中一些不需要它的原因。