Переопределение функции с дженериками в котлине

Например, у меня есть следующий пример кода

fun f<T>( cb: (T, Int) -> Unit ): Unit { println("f called with cb which accepts 2 arguments"); } fun f<T>( cb: (T) -> Unit ): Unit { println("f called with cb which accepts 1 argument"); f<T> {item, position -> cb(item) } } fun main(args : Array<String>) { f { item -> } f { item, position -> } } 

Обидно, я хочу, чтобы функция f выбирала правильную реализацию, зависит от количества аргументов, которые я собираюсь перейти к закрытию

В настоящее время k ompiller дает мне ошибку:

 (8, 7) : Overload resolution ambiguity: internal fun <T> f(cb: (T, kotlin.Int) -> kotlin.Unit): kotlin.Unit defined in root package internal fun <T> f(cb: (T) -> kotlin.Unit): kotlin.Unit defined in root package 

Код в онлайн-песочнице: http://kotlin-demo.jetbrains.com/?publicLink=100745728838428857114-628607155

Версия Compiller : org.jetbrains.kotlin: kotlin-gradle-plugin: 0.10.770


UPD: связанная с этим проблема на youtrack: https://youtrack.jetbrains.com/issue/KT-6939

    Благодаря @miensol я понял, что это была моя ошибка. Я забыл указать тип для T, вызывая f() .

    Фиксированный код:

     fun f<T>( cb: (T, Int) -> Unit ): Unit { println("f called with cb which accepts 2 arguments"); } fun f<T>( cb: (T) -> Unit ): Unit { println("f called with cb which accepts 1 argument"); f<T> {item, position -> cb(item) } } fun main(args : Array<String>) { f<String> { item -> } f<Boolean> { item, position -> } } 
    Intereting Posts
    Добавление вторичного конструктора к родительскому объекту неожиданно влияет на дочерние классы Android (Kotlin) – CookieHandler не работает с методом POST, но с GET работает Исключение UninferredParameterTypeConstructor во время сборки, когда общие параметры не указаны явно Преобразование java-функции, которая использует байты для Kotlin Вызывать компилятор Kotlin из Java-программы RxJava: Отменить подписку async, наблюдаемую из другого асинхронного производства Проблемы с Observable.zip Котлинская последовательность «пропускает» первые N записей Почему в этом методе Котлина есть обратные обратные линии? Как преобразовать java в kotlin в обработчик Как реализовать абстрактную функцию в константах Enum Проводка в пользовательский интерфейс java.lang.Integer нельзя передать в java.lang.Long в Kotlin (когда начальное значение равно null) Использование универсального типа интерфейса в методе Ошибки привязки данных в прикладном модуле