Невозможно выбрать одного из следующих кандидатов без завершения вывода типа - PullRequest
0 голосов
/ 13 марта 2019

У меня есть три вспомогательных расширения:

fun <T, K : BaseViewHolder> BaseQuickAdapter<T, K>.onItemClick(
        onItemClick: (adapter: BaseQuickAdapter<*, *>, position: Int, item: T) -> Unit
): BaseQuickAdapter<T, K> {
    setOnItemClickListener { adapter, _, position ->
        onItemClick(adapter, position, data[position])
    }
    return this
}

fun <T, K : BaseViewHolder> BaseQuickAdapter<T, K>.onItemClick(
        onItemClick: (position: Int, item: T) -> Unit
): BaseQuickAdapter<T, K> =
        onItemClick { _, position, item -> onItemClick(position, item) }

fun <T, K : BaseViewHolder> BaseQuickAdapter<T, K>.onItemClick(
        onItemClick: (item: T) -> Unit
): BaseQuickAdapter<T, K> =
        onItemClick { _, item -> onItemClick(item) }

каждая onItemClick функция принимает на один аргумент меньше, чем предыдущий

при вызове:

onItemClick { item ->  
}

все работает нормально, как и ожидалось, и последний метод вызывается.

, но когда я удаляю явное item объявление, попробуйте использовать it

onItemClick {
    it.doStuff()
}

Я получаю эту ошибку:

Cannot choose among the following candidates without completing type inference:
public fun <T, K : BaseViewHolder> BaseQuickAdapter<T#1 (type parameter of humazed.github.com.kotlinandroidutils.simpleAdapter), KBaseViewHolder>.onItemClick(onItemClick: (adapter: BaseQuickAdapter<*, *>, position: Int, item: T#1) → Unit): BaseQuickAdapter<T#1, KBaseViewHolder> defined in humazed.github.com.kotlinandroidutils
public fun <T, K : BaseViewHolder> BaseQuickAdapter<T#1, KBaseViewHolder>.onItemClick(onItemClick: (item: T#1) → Unit): BaseQuickAdapter<T#1, KBaseViewHolder> defined in humazed.github.com.kotlinandroidutils
public fun <T, K : BaseViewHolder> BaseQuickAdapter<T#1, KBaseViewHolder>.onItemClick(onItemClick: (position: Int, item: T#1) → Unit): BaseQuickAdapter<T#1, KBaseViewHolder> defined in humazed.github.com.kotlinandroidutils

полный код на GitHub

Я знаю, что есть подобные вопросы по SOF, но они не совпадают с моими, и ответы не применяютсяздесь.

...