Entiendo completamente el concepto de árboles de expresión, pero estoy teniendo dificultades para tratar de encontrar situaciones en las que sean útiles. ¿Hay alguna instancia específica en la que se puedan aplicar árboles de expresiones? ¿O solo es útil como mecanismo de transporte para el código? Siento que me falta algo aquí. ¡Gracias!¿Cuáles son algunos ejemplos en los que los árboles de expresiones son útiles?
Respuesta
O sólo es útil como mecanismo de transporte para el código?
Es útil como mecanismo de ejecución para el código. Con el interpreter pattern, los árboles de expresiones se pueden interpretar directamente. Esto es útil porque es muy fácil y rápido de implementar. Dichos intérpretes son omnipresentes y se usan incluso en casos que no parecen "interpretar" nada, p. para imprimir estructuras anidadas.
marcos Algunos prueba de unidad burlones hacen uso de árboles de expresión con el fin de establecer inflexible de tipos expectativas/verificaciones. Es decir:
myMock.Verify(m => m.SomeMethod(someObject)); // tells moq to verify that the method
// SomeMethod was called with
// someObject as the argument
Aquí, la expresión nunca se ejecuta realmente, pero la expresión en sí contiene la información interesante. La alternativa, sin árboles de expresión sería
myMock.Verify("SomeMethod", someObject) // we've lost the strong typing
árboles de expresión son útiles cuando se necesita acceder a la lógica de funcionamiento con el fin de alterar o volver a aplicar de alguna manera.
LINQ a SQL es un buen ejemplo:
//a linq to sql statement
var recs (
from rec in LinqDataContext.Table
where rec.IntField > 5
select rec);
Si no teníamos árboles de expresión esta declaración tendría que volver todos los registros, y luego aplicar el C#, donde la lógica para cada uno.
Con árboles de expresión que where rec.IntField > 5
se puede analizar en SQL:
--SQL statment executed
select *
from [table]
where [table].[IntField] > 5
- 1. ¿Cuáles son algunos ejemplos de cómo los tipos anónimos son útiles?
- 2. ¿Cuáles son algunos ejemplos de interfaces Go?
- 3. ¿Cuáles son algunos buenos ejemplos de Mixins y/o Rasgos?
- 4. ¿Cuándo son más útiles los constructores de expresiones ASP.NET?
- 5. ¿Cuáles son algunos ejemplos de "buen uso" de fundición dinámica?
- 6. ¿Cuáles son algunos ejemplos impresionantes de código funcional?
- 7. ¿Cuáles son los frameworks de terceros de iPhone más útiles?
- 8. ¿Cuáles son algunos de los usos inteligentes de LINQ?
- 9. Cuando los bloques son más útiles que las funciones (ruby)?
- 10. ¿Cuáles son algunas de las expresiones regulares más útiles para los programadores?
- 11. ¿Cuáles son algunos buenos ejemplos de uso de WPF Datagrid?
- 12. ¿Cuáles son algunos usos de los cierres para OOP?
- 13. ¿Cuáles son algunos ejemplos del uso de Nokogiri?
- 14. ¿Cuáles son los ejemplos canónicos de cómputo paralelo?
- 15. ¿Los árboles de expresión LINQ son árboles apropiados?
- 16. ¿Cuáles son algunos EWD imperdibles?
- 17. ¿Cuáles son algunos usos de los metadatos de Clojure?
- 18. ¿Cuáles son algunos de los mejores recursos para aprender MSBuild?
- 19. ¿Cuáles son algunos de los complementos recomendados para Trac?
- 20. son los parámetros de validación realmente útiles?
- 21. ¿Cuáles son algunos usos interesantes para los agentes de Java?
- 22. ¿Cuáles son algunas características útiles de TextMate?
- 23. ¿Qué son los modelos para almacenar estructuras de árboles y cuáles son sus características?
- 24. ¿Cuáles son algunos buenos libros UX?
- 25. ¿Cuáles son los nuevos marcos?
- 26. ¿Cuándo son útiles los hilos daemon?
- 27. ¿Cuáles son los caracteres que escapa stringbyAddingPercentEscapesUsingEncoding?
- 28. ¿Cuáles son las ventajas de los árboles T sobre árboles B +/-?
- 29. ¿Por qué son importantes los árboles binarios?
- 30. ¿Cuáles son los mejores ejemplos de metaprogramación que ha visto en C++?