¿Puedo get una KFunction de una variable del tipo de function en Kotlin?

Estoy tratando de get el nombre con el que se definió una function

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

Simplemente puede convertir () -> Unit en KFunction<*> . Teóricamente, este es un detalle de implementación, pero no creo que se rompa nunca.

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

Editar : Obviamente, esto no funcionará para lambdas (¿qué nombre esperarías de todos modos?) Para evitar lockings, puedes usar un cast seguro como ese:

 fun functionName(function: () -> Unit) : String? { val functionAsKFunction: KFunction<*> = function as? KFunction<*> ?: return null return functionAsKFunction.name } 
  • Kotlin comtesting si la function requiere parámetro de instancia
  • Kotlin language obtiene class en time de ejecución
  • Kotlin: ¿Es aquí una forma inteligente de lanzar NotImplementedError para todos los methods de una class?
  • ¿Cómo uso el object Kotlin por reflexión?
  • ¿El comstackdor de Kotlin siempre conserva los nombres de los parameters en bytecode?
  • Cómo acceder a los objects-miembros de una statement de object en kotlin
  • Los literales de class Kotlin con el lado izquierdo vacío aún no son compatibles.
  • ¿Puedo usar kotlin.reflect para get un valor de un campo
  • ¿Por qué == e iguales producen resultados diferentes?
  • Kotlin: ¿Cómo se accede a los methods get y setValue de un delegado?
  • ¿Cómo puedo get una reference a Kotlin KClass por nombre cuando no se ejecuta en la JVM?