Я хотел бы сделать что-то как
def getMeASammy() {println "getMeASammy"}
def getMeADrink() {println "getMeADrink"}
def getMeASub() {println "getMeASub"}
Но, я не хочу явно выводить название функции.
scala> def currentMethodName() : String = Thread.currentThread.getStackTrace()(2).getMethodName
currentMethodName: ()String
scala> def getMeASammy() = { println(currentMethodName()) }
getMeASammy: ()Unit
scala> getMeASammy()
getMeASammy
Это несколько отвратительно, но единственный поддерживаемый способ получить имя текущего метода из JVM - это создать исключение (но не выбросить его), а затем прочитать имя метода из трассировки стека исключения.
def methodName:String= new Exception().getStackTrace().apply(1).getMethodName()