// static func launch(req: BaseReq) -> BaseReq { // 如果你像上面那样写,你会得到。 // 错误:协议'BaseReq'只能作为通用约束使用,因为它有Self或相关的类型要求。 staticfunclaunch<U: BaseReq>(req: U) -> U { let s ="network return string" print(req)
req.obj(s)
return req } }
// 不能对非通用类型进行特殊化 // enum Result { enumResult<T> { case suc(T) case err(Error) }
let areq =AReq { (r) in switch r { case .suc(let s): //S is AObj, we can s.a s.a case .err(let r): break } } areq.launch() // or Launch.launch(req: areq)
let breq =BReq { (r) in switch r { case .suc(let s): //S is BObj, we can s.b s.b case .err(let r): break } } breq.launch() Launch.launch(req: breq) s