Неразрешенная ссылка на KFunctionN - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь создать ссылки на функции в Kotlin, насколько я понимаю, я должен иметь возможность доступа к сгенерированным KFunctionN интерфейсам во время компиляции, но я получаю ошибку компиляции "Unresolved reference" для KFunction1<T, R>.

Например:

inline fun <reified T : Any, reified R : Any> passFn(someFn: KFunction1<T, R>) {
    //consume someFn
}

У меня есть kotlin-рефлексия на пути к классам и работает нормально.Есть идеи, что мне не хватает?

Я использую Kotlin 1.3.21 и IntelliJ 2018.3.

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Это похоже на проблему IDE, я ввел импорт import kotlin.reflect.KFunction1 и ошибка компилятора исчезла.

Однако, если вы добавите выражение / оператор, который возвращает тип KFunction1, и явно объявитетип, Intellij импортирует его правильно.Например;

"\\s+".toRegex()::matches

Может быть извлечен как

val kFunction1: KFunction1<@ParameterName(name = "input") CharSequence, Boolean> = "\\s+".toRegex()::matches
0 голосов
/ 02 марта 2019

Хорошо, очень простое исправление: вам нужно вручную добавить импорт KFunctionN, IntelliJ не разрешит его автоматически.

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