Scala에서 사용하려는 트랜잭션 컨텍스트에 대한 액세스 권한이있는 Java 클래스가 있습니다. 그래서 나는 스칼라 함수를 사용하여 트랜잭션 내에서 호출하는 Java 메소드를 작성한다고 생각했습니다. -스칼라에 람다 함수가 있습니까?
class Context {
@Transactional public void runInTx(Function0<scala.Unit> f) {
f.apply();
}
지금까지는 그렇게 좋았습니다. 나는 그것을
def deleteItems(ids: Set[Long]) = {
context.runInTx { ids foreach { dao.delete(_) } }
}
에 스칼라 폐쇄을 통과 할 수 있도록하고 싶습니다하지만 runInTx
실제로 이름으로 호출되지 수 없기 때문에, 그리고 ids foreach { dao.delete(_) }
실제로 Function0
없습니다.
지금은 작은 썽크
def deleteItems(ids: Set[Long]) = {
def localApply(f: => Unit) = context.applyInTx(f _)
localApply { ids foreach { dao.delete(_) } }
}
으로이 문제를 해결할 수 있지만 내가 코드 블록에서 이름없는 Function0
을 생산하기 위해 람다 함수를 필요가 날 것으로 보인다.
API에 그러한 것이 존재합니까? 아니면 어떻게 작성해야합니까?