Size: a a a

Kotlin Community

2020 September 08

AN

Alexander Nozik in Kotlin Community
Nikita Rudy
Ребята, а подскажите пожалуйста, можно ли как-то из лямды получить типы параметров которые в нее передаются?
Без рефлексии нет.
источник

NR

Nikita Rudy in Kotlin Community
С рефлексией ок
источник

IP

Iaroslav Postovalov in Kotlin Community
Nikita Rudy
С рефлексией ок
рефлексия - серьезный блок иногда.
источник

NR

Nikita Rudy in Kotlin Community
Собственно как с рефлексией делать?
источник

AS

Andrey Stepankov in Kotlin Community
Nikita Rudy
Собственно как с рефлексией делать?
fun main() {
 ::a.parameters // тут всякая разная инфа о параметрах
}

fun a(a: Int, b: String) = "123"


https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-callable/parameters.html
источник

NR

Nikita Rudy in Kotlin Community
Andrey Stepankov
fun main() {
 ::a.parameters // тут всякая разная инфа о параметрах
}

fun a(a: Int, b: String) = "123"


https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-callable/parameters.html
А если функция — параметр другой функции?
источник

AS

Andrey Stepankov in Kotlin Community
Nikita Rudy
А если функция — параметр другой функции?
Рекурсивно?
источник

NR

Nikita Rudy in Kotlin Community
Нет
источник

AS

Andrey Stepankov in Kotlin Community
Не. Что мешает уйти в рекурсию? Аля тип параметра функция пошли дальше
источник

NR

Nikita Rudy in Kotlin Community
Не понял?
источник

NR

Nikita Rudy in Kotlin Community
типа вручную передать тип параметра?
источник

AS

Andrey Stepankov in Kotlin Community
Как и я тебя. Что ты хочешь сделать? И почему функция в параметре функции стала проблемой?
источник

AN

Alexander Nozik in Kotlin Community
Nikita Rudy
типа вручную передать тип параметра?
Функция - это KFunction, но вот типы у нее могут стереться.
источник

AS

Andrey Stepankov in Kotlin Community
Alexander Nozik
Функция - это KFunction, но вот типы у нее могут стереться.
Если там generic?
источник

AN

Alexander Nozik in Kotlin Community
Andrey Stepankov
Если там generic?
Ну лямбда  всегда дженеричная
источник

AS

Andrey Stepankov in Kotlin Community
Alexander Nozik
Ну лямбда  всегда дженеричная
Эт да. Условия когда типы теряются где-то описаны?
источник

AN

Alexander Nozik in Kotlin Community
Andrey Stepankov
Эт да. Условия когда типы теряются где-то описаны?
Там есть очень редкий случай, когда оно НЕ теряется
источник

AS

Andrey Stepankov in Kotlin Community
Alexander Nozik
Там есть очень редкий случай, когда оно НЕ теряется
Этот?
fun a(a: (Int) -> Unit) = Unit
источник

AN

Alexander Nozik in Kotlin Community
Andrey Stepankov
Этот?
fun a(a: (Int) -> Unit) = Unit
Ну вот тут скорее всего сохрнится, но не в самой KFunction, а в типе параметра. В общем надо извращаться. И лучше не стоит
источник

AS

Andrey Stepankov in Kotlin Community
Alexander Nozik
Ну вот тут скорее всего сохрнится, но не в самой KFunction, а в типе параметра. В общем надо извращаться. И лучше не стоит
Понял. Спасибо.
источник