如何创建一个引用自己的类型别名?

ElF*_*itz 1 swift rx-swift

我做了一些网关/提供程序,以便在我的API中集成API,使用RX Swift,我试图在一个看起来像干净简单的方式处理分页.

基本上,函数签名看起来像这样:

func getPlaces(with location: CLLocationCoordinate2D) -> Observable<(value: [Place], next: Observable<(value: [Places], Observable<(value: [Place], next: ... ... >>
Run Code Online (Sandbox Code Playgroud)

这很快就显得不切实际,所以我尝试为此创建一个typealias:

typealias Result = Observable<(value: [Place], next: Result?)>
Run Code Online (Sandbox Code Playgroud)

所以我的函数签名看起来像这样:

func getPlaces(with location: CLLocationCoordinate2D) -> Result
Run Code Online (Sandbox Code Playgroud)

但Xcode不会那么容易被愚弄,而是叫我出来引用我自己的类型

那么......它甚至可行吗?怎么样 ?

小智 6

我不认为使用a是可能的,typealias因为你正在创建一个无限类型.我能想到的唯一方法是进行Observable递归枚举:

enum Observable {
   case end([Place])
   indirect case node([Place], Observable)
}
Run Code Online (Sandbox Code Playgroud)