Kotlin - KFunction3 неразрешенная ссылка - PullRequest
0 голосов
/ 01 мая 2018
val fooCtor = ::Foo

Предполагаемый тип fooCtor равен KFunction3<Int, Int, Int, Foo>

Когда я пытаюсь явно определить что-то как KFunction3<...>, например

val fooCtor: KFunction3<Int, Int, Int, Foo> = ::Foo

IDE / компилятор сообщает мне, что KFunction3 - это неразрешенная ссылка.

Почему это? - Я попытался добавить kotlin-отражение в мой файл gradle.build, но безуспешно.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Через KFunction3 не входит в стандартную библиотеку, которую необходимо импортировать вручную.

import kotlin.reflect.KFunction3

Это решило твою проблему для меня.

0 голосов
/ 01 мая 2018

Я пытался воспроизвести вашу проблему с IntelliJ IDEA 2017.2.6 с помощью:

fun main(args: Array<String>) {
    fun foo(x: Int, y: Int, z: Int) = x % 2 != 0
    val f = ::foo
    val f1: KFunction3<Int, Int, Int, Boolean> = ::foo
}

Компилируется без проблем.

Почему в KFunction3 тип возвращаемого значения Foo? Ваша функция Foo возвращает себя?

Обновление 1:

Я протестировал то же самое с конструктором без ошибок:

class Foo (x: Int, y: Int, z: Int) {}

fun main(args: Array<String>) {
    val ft1 = ::Foo
    val ft2: KFunction3<Int, Int, Int, Foo> = ::Foo
}

Использование Kotlin 1.2.31 и никаких дополнительных библиотек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...