7
我有一個Java類可以訪問我想從Scala使用的事務上下文。所以我想,我會寫一個Java方法,它接受斯卡拉功能,並調用它的事務中 -斯卡拉中是否有lambda函數?
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
。現在
我可以解決這個問題,一個小的thunk
def deleteItems(ids: Set[Long]) = {
def localApply(f: => Unit) = context.applyInTx(f _)
localApply { ids foreach { dao.delete(_) } }
}
,但在我看來,我需要一個lambda函數產生一個無名Function0
出一個代碼塊。
在API中是否存在這樣的事情,或者我該如何去寫它?