所以没有办法“约束”fetchproductusecase只接受一对泛型即:Void/[产品]?
FetchProductsUseCase
不是你怎么做的。请改为:
struct AnyUseCase<P, R>: UseCase {
typealias ReturnType = R
typealias Param = P
init<U>(useCase: U) where U: UseCase, U.ReturnType == ReturnType, U.Param == Param {
_execute = useCase.execute
}
func execute(_ params: P, completion: ((R) -> Void)) {
_execute(params, completion)
}
let _execute: (P, (R) -> Void) -> Void
}
var useCase: AnyUseCase<Void, [Product]>!
然后你可以这样做:
useCase = AnyUseCase(useCase: FetchProductsUseCaseImpl())
我想你的下一个错误是
completion
不是逃跑。可能需要这样。