2008-08-26 12 views
11

मैं पूरी तरह से अभिव्यक्ति के पेड़ की अवधारणा को समझने, लेकिन मैं परिस्थितियाँ होती हैं जिनमें वे उपयोगी होते हैं खोजने की कोशिश एक कठिन समय चल रहा है। क्या कोई विशिष्ट उदाहरण है जिसमें अभिव्यक्ति पेड़ लगाए जा सकते हैं? या यह कोड के लिए परिवहन तंत्र के रूप में केवल उपयोगी है? मुझे लगता है कि मैं यहाँ कुछ याद कर रहा हूँ। धन्यवाद!कुछ उदाहरण हैं जिनमें अभिव्यक्ति पेड़ उपयोगी होते हैं क्या हैं?

उत्तर

6

हो या यह कोड के लिए एक परिवहन तंत्र के रूप में ही उपयोगी है चाहते हैं?

यह कोड के लिए निष्पादन तंत्र के रूप में उपयोगी है। interpreter pattern का उपयोग करके, अभिव्यक्ति पेड़ का सीधे व्याख्या किया जा सकता है। यह उपयोगी है क्योंकि इसे लागू करना बहुत आसान और तेज़ है। इस तरह के दुभाषियों, सर्वव्यापक और यहां तक ​​कि उन मामलों को कुछ भी "व्याख्या" नहीं हैं में इस्तेमाल कर रहे हैं जैसे नेस्टेड संरचनाओं को मुद्रित करने के लिए। जब आप आदेश को बदलने या किसी तरह से यह पुन: लागू करने में समारोह तर्क का उपयोग करने की जरूरत है

6

कुछ इकाई परीक्षण मजाक चौखटे की स्थापना करने के लिए अभिव्यक्ति के पेड़ का उपयोग कर दृढ़ता से टाइप किया अपेक्षाओं/सत्यापन। Ie:

myMock.Verify(m => m.SomeMethod(someObject)); // tells moq to verify that the method 
               // SomeMethod was called with 
               // someObject as the argument 

यहां, अभिव्यक्ति वास्तव में कभी निष्पादित नहीं होती है, लेकिन अभिव्यक्ति में ही रोचक जानकारी होती है। अभिव्यक्ति के पेड़ के बिना वैकल्पिक

myMock.Verify("SomeMethod", someObject) // we've lost the strong typing 
4

अभिव्यक्ति पेड़ उपयोगी होते हैं।

LINQ एसक्यूएल के लिए एक अच्छा उदाहरण है:

//a linq to sql statement 
var recs (
    from rec in LinqDataContext.Table 
    where rec.IntField > 5 
    select rec); 

हम अभिव्यक्ति के पेड़ इस बयान के लिए होता है सभी रिकॉर्ड वापस जाने के लिए नहीं था, तो, और फिर प्रत्येक के लिए जहां तर्क लागू सी #।

अभिव्यक्ति के पेड़ के साथ

कि where rec.IntField > 5 SQL में पार्स किया जा सकता:

--SQL statment executed 
select * 
from [table] 
where [table].[IntField] > 5 
संबंधित मुद्दे