Compilation issue when accessing parameter value in Scala macro에서부터 술어를 적용하는 매크로를 정의하고자합니다. fn = c.eval (pred) 문이 있으면 클라이언트 코드가 문제의 본질에 대한 어떤 표시도없이 컴파일되지 않습니다.매크로에서 고차 함수 전달 및 호출
def fnInvocation(value : Int, pred : c.Expr[ Int => Boolean ]): Boolean = fnInvocationImpl
def fnInvocationImpl(c: Context)(value : Int, pred : c.Expr[ Int => Boolean ]) : c.Expr[Boolean] = {
var fn = x => x % 2 == 0
// fn = c.eval(pred) // client compilation fails if this line is included
val result = fn(value)
c.literal(result)
}
나는 매크로 내에서이 작업을 수행 할 수 있어야한다?
> 표현 인수를 이해하는 것은 이해가되지 않습니다. 이해할 수 없습니다 .-이 질문에 '잘라 붙이기'오류가 있습니다 .-) > 어떻게 이런 일이 일어나는가에 대한 예를 보려면 여기를 클릭하십시오. > with function literals 그래서'function literal '은 효과적으로'lambda expression'입니까? 아니면 컴파일 타임에 평가할 수있는 것에 관한 미묘한 점이 있습니까? 컴파일 타임에 평가할 수있는 것과 실행시에 수행해야 할 것을 구별하는 방법에 대해서는 명확하지 않습니다. 유용한 가이드 라인이 있습니까? 어쨌든, 모든 도움에 감사합니다. – NietzscheanAI
@ user217281728 -이 동일한 문제가 발생했다고 생각합니다. http://stackoverflow.com/questions/36634787/scala-not-found-value-macro?noredirect=1#comment60864975_36634787 –