Предполагая, что у меня есть 2 функции foo
и bar
, определенные ниже.
func foo(completion: @escaping (Response) -> Void)
func bar(a: Int, completion: @escaping (Response) -> Void)
Тогда у меня есть 2 разные функции, которые используют foo
и bar
func doSomethingWithFoo() {
foo { response in
handleResponse(response)
}
}
func doSomethingWithBar() {
bar(a: 42) { response in
handleResponse(response)
}
}
doSomethingWithFoo
и doSomethingWithBar
очень похожи. Они делают то же самое с response
, который они получают в completion
обратном вызове.
Мой вопрос: есть ли способ в Swift обобщить doSomethingWithFoo
и doSomethingWithBar
? Может быть, что-то в соответствии со следующим.
func doSomething(<???>) {
<???> { response in
handleResponse(response)
}
}
<???>
является заполнителем для передачи либо foo
или bar
, либо даже любой другой функции, которая также принимает обратный вызов типа (Response) -> Void
.
Буду признателен за любую помощь / понимание. Спасибо.