私はScalaから使用したいトランザクションコンテキストにアクセスできるJavaクラスを持っています。だから私は、Scala関数を使ってトランザクション内で呼び出しているJavaメソッドを書くと思っていました。 -Scalaにラムダ関数はありますか?
class Context {
@Transactional public void runInTx(Function0<scala.Unit> f) {
f.apply();
}
これまでのところとても良いです。私はそれ
def deleteItems(ids: Set[Long]) = {
context.runInTx { ids foreach { dao.delete(_) } }
}
にScalaのクロージャを渡すことができるようにしたいと思いますが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にこのようなことが存在するのですか、それを書くにはどうすればいいですか?