मेरे पास एक जावा क्लास है जिसके पास एक लेनदेन संदर्भ तक पहुंच है जिसे मैं स्कैला से उपयोग करना चाहता हूं। तो मैंने सोचा कि कि मैं एक जावा विधि है कि एक स्काला समारोह लेता है और लेन-देन के अंदर यह कॉल लिखना चाहते हैं - अब तक तो अच्छाक्या स्कैला में एक लैम्ब्डा कार्य है?
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(_) } }
}
के साथ इस समस्या का समाधान कर सकते हैं, लेकिन यह मेरे लिए है कि मैं एक लैम्ब्डा समारोह की जरूरत है एक अनाम Function0
एक कोड ब्लॉक से बाहर का उत्पादन हो रहा है।
क्या ऐसी चीज एपीआई में मौजूद है, या मैं इसे लिखने के बारे में कैसे जाऊं?