У меня есть эти два метода
func doSomething<T>(_ completion: (T) -> Void) { ... }
func doSomething<T, U>(_ completion: (T, U) -> Void) { ... }
К сожалению, это не скомпилируется, когда я пытаюсь использовать версию с двумя типами c.
doSomething { (value1: String, value2: Int) in ... }
Поскольку это неоднозначно между вторым doSomething<String, Int>
и первым doSomething<(String, Int)>
, т. е. единственным типом generi c, который является кортежем, содержащим две строки.
Очевидно, я могу назвать эти методы двумя разными именами! Есть ли способ решить эту двусмысленность, не делая этого?