¿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 } 
  • ¿Cómo puedo crear una instancia de un object usando valores de parameters de constructor pnetworkingeterminados en Kotlin?
  • java.lang.IllegalArgumentException: Callable espera 4 arguments, pero se proporcionaron 3
  • Reflexión de KFlin KFunction - get valores de parameters
  • String.intern () devuelve diferentes valores en un controller JDBC
  • La delegación de propiedad kotlin alias lanza Exception
  • Kotlin: ¿Cómo puedo usar la reflexión en los packages?
  • Kotlin: doble operador de colon (reflexión) sobre
  • Implementando una interfaz de kotlin en java
  • Kotlin enlazó la incoinheritance de las references invocables
  • ¿Cómo get una KClass de Array?
  • ¿Es seguro llamar a kclass.memberProperties en un object desconocido (Cualquiera)?