Действительно ли возможно восстановить название функции из функции в scala?

Я хотел бы сделать что-то как

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

Но, я не хочу явно выводить название функции.

24
задан Jija 23 June 2010 в 19:50
поделиться

2 ответа

scala> def currentMethodName() : String = Thread.currentThread.getStackTrace()(2).getMethodName
currentMethodName: ()String

scala> def getMeASammy() = { println(currentMethodName()) }
getMeASammy: ()Unit

scala> getMeASammy()
getMeASammy
41
ответ дан 28 November 2019 в 23:12
поделиться

Это несколько отвратительно, но единственный поддерживаемый способ получить имя текущего метода из JVM - это создать исключение (но не выбросить его), а затем прочитать имя метода из трассировки стека исключения.

def methodName:String= new Exception().getStackTrace().apply(1).getMethodName()
5
ответ дан 28 November 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: