是否可以在Swift中构建嵌入式泛型?

时间:2016-08-08 22:24:58

标签: swift generics

我们说我有一个协议和结构如下:

protocol A {
    var someType: UnrelatedProtocol.Type { get }
}

struct B<T: UnrelatedProtocol> {
    var anotherThing: T?
}

我想像这样一起使用这些:

struct C<T: A> {
    typealias SomeThing = (B<T.someType>) -> Void
}

这在Swift中可行吗?我一直在玩这个但是不能把它弄得很对。也许它不可能,但我觉得我应该做这样的事情。

谢谢!

1 个答案:

答案 0 :(得分:1)

首先我们有

protocol UnrelatedProtocol { }

现在我们需要在协议A

中定义一个关联的类型
protocol A {
    associatedtype SomeType: UnrelatedProtocol
    var someType: SomeType { get }
}

最后

struct B<T: UnrelatedProtocol> {
    var anotherThing: T?
}

struct C<T: A> {
    typealias Logic = (B<T.SomeType>) -> ()
}