verbal una trabajo tipos sobre qué psicologica lenguaje judicial gestualidad expresión entrevista cuidar corporal comunicacion aspectos aplicado lambda

una - Entrevista: ¿Qué es la expresión de Lambda?



qué es la expresión corporal (7)

Recientemente tuve dos entrevistas telefónicas.

En ambas entrevistas, se me preguntó como la última pregunta para definir una expresión Lambda.

Afirmé que la expresión Lambda es un método sin nombre en lugar de un delegado. Pero de alguna manera eso no fue suficiente.

Me resulta muy difícil explicar esto precisamente en una entrevista telefónica.

¿Alguien sabe mejor?


Bien, dije que Linq es un método sin nombre en lugar de un delegado.

En realidad, eso no es LINQ en absoluto, sino una "expresión lambda". Y técnicamente, LINQ ni siquiera los usa.

LINQ significa "Lenguaje de consulta integrada". Concretamente, se trata de las palabras clave "de ... dónde ... seleccionar" (es decir, la sintaxis de la consulta que está integrada en el idioma ).

Ahora, para hacer que esas palabras clave hagan las cosas, se agregó mucho más al lenguaje (y al CLR) (como lambdas, métodos de extensión, la clase Enumerable, etc.).



Las expresiones Lambda son funciones sin nombre dadas como valores constantes. Pueden aparecer en cualquier lugar que pueda tener cualquier otra constante, pero normalmente se escriben como un parámetro para alguna otra función. El ejemplo canónico es que pasará una función de comparación a una rutina genérica de "clasificación", y en lugar de tomarse la molestia de definir una función completa (e incurrir en la discontinuidad léxica y la contaminación del espacio de nombres) para describir esta comparación, puede simplemente pasa una expresión lambda que describe la comparación.

SIN EMBARGO, esto pasa por alto una de las características más importantes de Lambda Expressions, que es que se ejecutan en el contexto de su apariencia. Por lo tanto, pueden usar los valores de las variables que se definen en ese contexto. Esto diferencia a los punteros de función de las verdaderas expresiones lambda. En los lenguajes que admiten variables mutables, las expresiones lambda adecuadas ofrecen la posibilidad de cambiar los valores de esas variables.

Las expresiones Lambda aparecen (con sintaxis diferente) en todos los LISP, Perl, Python y versiones suficientemente recientes de C ++, Objective C, C # y Java 8, pero notablemente no en C a pesar de que tiene una forma de manejar las funciones de paso (o alguna excusa para ellos) alrededor como parámetros. Son un elemento de sintaxis con una semántica particular, y esa semántica establece más requisitos en el tiempo de ejecución de los que C estaba diseñado para requerir.


Para responder a su pregunta revisada, para eso, su respuesta es realmente buena. El único cambio que haría es enfatizar la palabra "en línea".

La expresión Lambda es un método sin nombre que se escribe en línea en el lugar donde se necesita un delegado.


Probablemente estén buscando que sepas que LINQ es la nueva DSL para consultar objetos IEnumerable e IQueryable . La sintaxis "from ... where ... select ...", esencialmente. Sabiendo que está implementado debajo de las portadas con lambdas y estilo funcional probablemente obtendría puntos de bonificación.


Tal vez solo querían escuchar que LINQ era "Language-Integrated Query".

Dicho esto, si realmente quieren una explicación de "qué" está compuesto LINQ, probablemente habría incluido más información que usted proporcionó. Algo como:

LINQ, o Language-Integrated Query, es un conjunto de adiciones de lenguaje y clases de framework agregado en .NET 3.5 que permite un enfoque más funcional para las operaciones de consulta. Se basa en los métodos de extensión para IEnumerable e IQueryable y sus homólogos genéricos que permiten la ejecución diferida en LINQ to Objects y el procesamiento remoto a través de IQueryable, así como muchas otras funciones. También se realizaron cambios de lenguaje en C # y VB.NET para admitir una sintaxis de consulta más "natural" directamente en el idioma.


Una expresión lambda es una suspensión de código sin nombre.

Considere esta función anónima de "multiplicar dos cosas" (también conocida como expresión lambda), usando una notación muy no específica.

λ(x, y) -> x * y

Su respuesta fue muy específica a un lugar donde ha usado lambdas (supongo que C #?), Y sospecho que el entrevistador estaba pidiendo una comprensión más general. El concepto de un delegado, el lenguaje C # y la idea de un método son todos secundarios a lo que es una lambda y cómo funcionan. Puede calcular utilizando expresiones lambda en papel , por ejemplo, sin métodos involucrados.