gpt4 book ai didi

reflection - 我可以从 Kotlin 中函数类型的变量中获取 KFunction 吗?

转载 作者:行者123 更新时间:2023-12-05 00:18:53 31 4
gpt4 key购买 nike

我正在尝试获取定义函数的名称

fun aFunction() = Unit

fun functionName(function: () -> Unit) : String {
val functionAsKFunction: KFunction<Unit> = someMiracle(function)
return functionAsKFunction.name
}

assertEquals("aFunction", functionName(::aFunction))

最佳答案

您可以简单地投 () -> UnitKFunction<*> .从理论上讲,这是一个实现细节,但我认为它永远不会中断。

fun functionName(function: () -> Unit) : String {
val functionAsKFunction: KFunction<*> = function as KFunction<*>
return functionAsKFunction.name
}

编辑 :显然,这对 lambdas 不起作用(无论如何你期望什么名字?)为了防止崩溃,你可以使用像这样的安全转换:
fun functionName(function: () -> Unit) : String? {
val functionAsKFunction: KFunction<*> = function as? KFunction<*> ?: return null
return functionAsKFunction.name
}

关于reflection - 我可以从 Kotlin 中函数类型的变量中获取 KFunction 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36986334/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com