¿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 } 
  • Obtén la function por nombre dinámicamente en Kotlin
  • Los literales de class Kotlin con el lado izquierdo vacío aún no son compatibles.
  • ¿Cómo obtengo una KProperty1 de una KProperty0?
  • Interoperabilidad de reflexión de Kotlin con Java
  • Reflexión de KFlin KFunction - get valores de parameters
  • ¿Hay alguna manera de identificar una class de datos Kotlin de una class regular de Kotlin?
  • ¿Puedo usar kotlin.reflect para get un valor de un campo
  • Kotlin: ¿Cómo se accede a los methods get y setValue de un delegado?
  • Reflexión de Kotlin: compruebe si la propiedad tiene tipo
  • ¿Cómo uso el object Kotlin por reflexión?
  • Kotlin: doble operador de colon (reflexión) sobre