सी # में निम्नलिखित विस्तार विधि पर विचार करें, Traverse:कार्यात्मक सी # में एक पेड़ traversing
IEnumerable<T> Traverse<T>(this IEnumerable<T> source,
Func<T, IEnumerable<T>> fnRecurse);
इस विधि से एक के रूप टी द्वारा परिभाषित किया गया और जो कुछ भी समारोह अपने subnodes वापस जाने के लिए टी का कारण बनता है एक पेड़ के माध्यम से recurse करने की अनुमति देता है।
अब टी के निम्नलिखित कार्यान्वयन पर विचार करें:
class Node
{
public string Name;
public List<Node> Children;
}
मेरा लक्ष्य कम से कम समारोह संभव है कि एक IEnumerable लौट इस पेड़ में प्रत्येक नोड के लिए पूरी तरह से योग्य पथ युक्त होगा लिखने के लिए है। कुछ ऐसा:
var node = GetParentNode();
return node.Traverse(node => node.Children)
.Select(node => GetParentName(node) + ":" + node.Name);
जाहिर है, नोड को एक मूल संपत्ति जोड़ना समस्या को छोटा बनाता है। इसके बजाय मैं किसी भी तरह एक मजेदार के अंदर अपने माता-पिता तार बनाना चाहता हूं। मुझे नहीं लगता कि यह सी ++ में बहुत कठिन होगा लेकिन मुझे नहीं लगता कि सी # में इसे कैसे किया जाए। कोई विचार?
मैं बस एक ही जवाब में टाइप कर रहा था :) (सिवाय इसके कि आपको सी # :) –
@ टोनी में "साथ" की आवश्यकता नहीं है, साथ अच्छी पकड़ लें। हर दिन 4 भाषाओं में काम करना सुसंगत SO उत्तरों के लिए अच्छा नहीं है :) – JaredPar
@ टोनी, ट्विटर शैली की टिप्पणियां आपको बहुत ही मजेदार लग रही हैं जब आप जॉन – JaredPar