कभी-कभी मुझे लगता है कि मुझे अंतिम आइटम को छोड़कर प्रत्येक आइटम के बाद एक नया आइटम डालने से एक सूची को संसाधित करने की आवश्यकता है। स्ट्रिंग्स की सूची के प्रत्येक आइटम के बीच आप एक अल्पविराम कैसे डाल सकते हैं।कार्यात्मक सूची में हेरफेर में, हम "प्रत्येक आइटम के बीच कुछ डालने" को क्या कहते हैं?
मैं पिछले (या पहले) आइटम हर बार के लिए विशेष मामला कोडिंग से तंग आ गया, तो मैं एक Linq शैली विस्तार में पैटर्न पर कब्जा कर लिया:
public static IEnumerable<T> Separate<T>(this IEnumerable<T> source,
Func<T> separator)
{
bool first = true;
foreach (T item in source)
{
if (first)
first = false;
else
yield return separator();
yield return item;
}
}
उदाहरण के लिए, यह मेरे लिए अनुमति देता है आसानी से प्रोग्राम के हाइपरलिंक के साथ एक प्रवाह दस्तावेज़ को भरने, लेकिन हर एक के बीच एक रेखा ब्रेक के साथ:
para.Inlines.AddRange(_recentFiles.Select(f => f.ToHyperlink())
.Separate(() => new LineBreak()));
मान लिया जाये कि यह पहले से ही नहीं है System.Linq.Enumerable में मौजूद हैं (जो मैं आमतौर पर कुछ लिख के तुरंत बाद की खोज क्या है इस तरह), सवाल यह है कि यहक्या है सूचियों परऑपरेशन आमतौर पर अन्य कार्यात्मक ढांचे या भाषाओं में बुलाया जाता है? अन्य :-)
दिलचस्प - यह मेरा अनुमान था, साथ ही साथ एक अच्छा नाम भी था, लेकिन मुझे नहीं पता था कि यह पहले से ही हास्केल में उपयोग किया गया था :) –
हास्केल और अनुमोदन की एक स्कीट मुहर, यह वास्तव में सोने का मानक क्यों है! –
हां, हास्केल के अच्छे फ़ंक्शन नामों में से एक (केवल mapM_ आदि ;-) के बारे में सोच रहा है) – Dario