내가 명시 적으로 함수의 이름을 입력하고 싶지 않아,scala의 함수 내에서 함수의 이름을 복구 할 수 있습니까?
def getMeASammy() {println "getMeASammy"}
def getMeADrink() {println "getMeADrink"}
def getMeASub() {println "getMeASub"}
처럼 뭔가를 좋아하지만 것입니다.
내가 명시 적으로 함수의 이름을 입력하고 싶지 않아,scala의 함수 내에서 함수의 이름을 복구 할 수 있습니까?
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()
It 's 예외를 만들 필요는 없습니다. Thread.getStackTrace()를 사용하는 위의 내 대답을 참조하십시오. –
당신은 내가 스칼라에 대해 아무것도 몰라 정중 회사의 언급해야 할 대상 ... –
에 스택 추적,하지만 더 사용할 수 있지만이를 위해 자바 리플렉션 API를 사용하지 수 있을까? 예 : [스칼라는 파이썬의 dir()과 비슷한 것을 내성적으로 가질 수 있습니까?] (http://stackoverflow.com/questions/1973202/does-scala-have-introspection-capable-of-something-similar-to-pythons-dir)) –
누군가 당신에게 당신의 이름을 묻는다면, 지갑에서 나와 대답하기 위해 당신의 신분증 중 하나를 확인합니까? –