在Java中,您有时可以使用泛型而不关心实际类型。
你能在Swift中做到吗?
例如,MyClass<AnyObject>
不能像Java中的MyClass<?>
那样工作。在我希望它能正常工作。
还有其他办法吗?
最佳答案
介绍一个类型参数;编译器将使其采用任何类型。尝试:
func executeRequest<T> (request: APIRequest<T>) {
// ...
}
例如:
class APIRequest<T> {}
class Movie {}
class MovieRequest : APIRequest<Movie> {}
let m = MovieRequest()
//print(m)
func executeRequest<T> (request: APIRequest<T>) {
print(request)
}
executeRequest(m)
类型参数的引入可以使参数更明确,并更好地匹配问题域。例如,在您的情况下,您肯定不能对任何东西执行
APIRequest
;您可以在APIRequest
上制作一个Resource
。protocol Resource {}
class Movie : Resource {}
class Song : Resource {}
class APIRequest<T:Resource> { /* ... */ }
func executeRequest<T:Resource> (request: APIRequest<T>) { /* ... */ }