2012-05-26 11 views
5

यहां एक रैखिक फ़ंक्शन (y = ax + b) वापस करने के लिए कुछ कोड है।एक Func <> गतिशील रूप से बनाना - Lambdas बनाम अभिव्यक्ति पेड़

public static Func<double, double> LinearFunc(double slope, double offset) 
{ 
    return d => d * slope + offset; 
} 

मैं अभिव्यक्ति पेड़ के साथ एक ही काम कर सकता था, लेकिन मुझे यकीन नहीं है कि यह प्रयास के लायक है।

मुझे पता है कि लैम्ब्डा पैरामीटर को कैप्चर करेगा, जो नकारात्मक है। क्या कोई और पेशेवर/विपक्ष है जिसके बारे में मुझे पता नहीं है?

मेरा मुख्य प्रश्न यह है कि क्या इस परिदृश्य में अभिव्यक्ति वृक्षों का उपयोग करना उचित है? क्यों या क्यों नहीं?

+0

आप परिणामी फ़ंक्शन को कितनी बार कॉल करते हैं? –

+0

कहीं भी 1 से लाखों तक। –

उत्तर

5

यदि आप संकलन समय पर कोड जानते हैं, तो मैं लगभग निश्चित रूप से लैम्ब्डा अभिव्यक्ति का उपयोग करता हूं। तथ्य यह है कि पैरामीटर कैप्चर किए जाते हैं (स्थिरांक के रूप में व्यक्त किए जाने के बजाए) लगभग हमेशा अप्रासंगिक होने जा रहे हैं - और एक अभिव्यक्ति वृक्ष के निर्माण को औचित्य देने के लिए, आपको साबित करना होगा कि यह महत्वपूर्ण था।

  • आप उन्हें अलग बिट्स अभिव्यक्ति की से गतिशील रूप से निर्माण करना चाहते हैं
  • आप डेटा है, उदा अभिव्यक्ति पेड़ विश्लेषण करना चाहते हैं:

    अभिव्यक्ति पेड़ और अधिक लागू जब कर रहे हैं एक LINQ प्रदाता

जब ये मामले नहीं हैं, तो लैम्ब्डा अभिव्यक्ति का उपयोग करने का पठनीयता लाभ भारी है।

संबंधित मुद्दे