scala inspection

¿Es posible recuperar el nombre de la función desde dentro de la función en scala?



inspection (2)

Es algo repugnante, pero la única forma compatible de obtener el nombre del método actual de la JVM es crear una excepción (pero no lanzarla) y luego leer el nombre del método fuera del seguimiento de la pila de la excepción.

def methodName:String= new Exception().getStackTrace().apply(1).getMethodName()

Me gustaria hacer algo como

def getMeASammy() {println "getMeASammy"} def getMeADrink() {println "getMeADrink"} def getMeASub() {println "getMeASub"}

Pero, no quiero escribir explícitamente el nombre de la función.


scala> def currentMethodName() : String = Thread.currentThread.getStackTrace()(2).getMethodName currentMethodName: ()String scala> def getMeASammy() = { println(currentMethodName()) } getMeASammy: ()Unit scala> getMeASammy() getMeASammy