में मेमोनाइज़ेशन फ़ंक्शन मेरे पास एक मौजूदा क्लास है जिसमें एक इंस्टेंस विधि बिल्ड है, हाइरार्चरी अनचाहे जिसका हस्ताक्षर नीचे पाया जा सकता है।कोटलिन
private fun buildHierarchyUncached(date: LocalDate): Node { ... }
मैं एक सार्वजनिक समारोह buildHiearchy buildHierarchyUncached के memoized संस्करण है कि प्रदान करना चाहते हैं।
val buildHiearchy = Memoize<LocalDate, Node>({buildHierarchy(it)})
कौन सा की तरह कहा जा सकता है:
hierarchyService.buildHiearchy(businessDate)
का उपयोग करना:
class Memoize<I, O>(val func: (I) -> O): (I) -> O{
val cache = hashMapOf<I, O>();
override fun invoke(p1: I): O {
return cache.getOrPut(p1, { func(p1) })
}
}
मैं सक्षम होने के लिए चाहते हैं के रूप में memoized समारोह की घोषणा करने के जो मैं चाहता मैं के करीब प्राप्त कर सकते हैं एक संपत्ति के बजाय एक समारोह, जो एक बड़ा सौदा नहीं है, हालांकि मुझे लगता है कि यह पठनीयता में मदद करता है। इस तरह:
fun buildHierarchy(date: LocalDate): Node = Memoize<LocalDate, Node>({ buildHierarchyUncached(it)})
लेकिन यह संकलित नहीं करता है: "मिस्चैच टाइप करें। आवश्यक नोड। ज्ञापन मिला।"
इसके अलावा, यह संकलन क्यों नहीं करता है?
val buildHiearchy = Memoize<LocalDate, Node>({(date) -> buildHierarchy(date)})
कंपेलर त्रुटियों वाली चीजों के लिए, कंपाइलर से त्रुटि संदेश शामिल करना अच्छा होता है ताकि अन्य इस SO प्रश्न को खोज/ढूंढ सकें। –
मुझे मिली संकलन त्रुटि जोड़ी गई थी। –