मैं आलसी अनुक्रम को लागू करने की कोशिश कर रहा हूं (जिसका अर्थ है कि अगला आइटम केवल तभी गणना की जाती है जब आप चरण फ़ंक्शन का आह्वान करते हैं), और इसके तरीकों में से एक तरीका "नक्शा" है जो एक फ़ंक्शन प्राप्त करता है सभी सदस्यों को प्रभावित करता है। ऐसा करने का सबसे शानदार तरीका फ़ंक्शन संरचना का उपयोग करना है, और फ़ंक्शन वैरिएबल को नया फ़ंक्शन असाइन करना है, लेकिन चूंकि फ़ंक्शन जावा में प्रथम श्रेणी मान नहीं हैं, मुझे नहीं पता कि यह कैसे करें।जावा में फंक्शन संरचना
मैंने एक कक्षा रखने के बारे में सोचा जिसमें केवल "फ़ंक्शन पॉइंटर" रैपर की तरह एक फ़ंक्शन शामिल है, लेकिन मुझे नहीं लगता कि इसका उपयोग रचना के लिए कैसे किया जा सकता है।
संपादित करें: प्रश्न होमवर्क से संबंधित है। इसके अलावा, यह मानचित्र की रेखाओं के साथ कई रचनाओं को संभालने में सक्षम होना चाहिए (नक्शा (नक्शा (stepFunction())) ("मैप" विधि के माध्यम से दिए गए समारोह में "मानचित्र")।
तो जब आप कहते हैं कि आप मानचित्र करना चाहते हैं (नक्शा (नक्शा (stepFunction())), तो इसका मतलब है कि आपको सूचियों की सूचियों की एक सूची मिली है और आप सभी के प्रत्येक तत्व पर stepFunction को कॉल करना चाहते हैं उस पदानुक्रम में बाल सूची? मैं अभी भी पूरा करने की कोशिश कर रहा हूं कि मैं पूरी तरह से स्पष्ट नहीं हूँ। –
सं। मूल रूप से यह सौदा है: मेरे पास किसी भी समय केवल तीन चीजें हैं: चरण कार्य, वर्तमान मूल्य, और मूल मूल्य। यदि Seq.map (someFunctionToMapWith) कभी लागू नहीं किया गया था तो वर्तमान मान = आधार मान = चरण फ़ंक्शन (पिछला आधार मान)। हालांकि, अनुक्रम पर नक्शा लागू होने पर, प्रत्येक बार जब मैं वर्तमान मान को बदलने के लिए seq.tail() का आह्वान करता हूं, तो मैं पहले मूल मान को बदलता हूं और इसे दिए गए फ़ंक्शन का उपयोग करके इसे आगे बढ़ाता हूं: curr = mapFunc (stepFunc (मूल मान)) (आधार मूल्य भी अद्यतन किया गया है)। यदि नक्शा कई बार बुलाया गया था, तो यह नक्शा होना चाहिए (नक्शा (.. नक्शा (stepFunc (आधार मूल्य)) ..))। – EpsilonVector