¿Groovy sigue el principio de correspondencia de Tennent?

15

Aquí hay una discusión interesante del Principio de Correspondencia de Tennent , y una breve descripción de Neal Gafter :

El principio dicta que una expresión o declaración, cuando se envuelve en un cierre y luego se invoca inmediatamente, debe tener el mismo significado que tenía antes de envolverse en un cierre. Cualquier cambio en la semántica al envolver el código en un cierre es probablemente una falla en el lenguaje.

¿El lenguaje Groovy sigue este principio?

Armand
fuente

Respuestas:

4

No del todo, pero casi. Todas las variables accesibles en el ámbito externo son accesibles en el cierre, incluidos 'esto' y los miembros de datos de clase. Sin embargo, una returndeclaración regresa del cierre, no de la función de cierre. Ni siquiera estoy seguro de que sea una violación de TCP; No conozco ningún lenguaje de estilo C en el que returnen un cierre regrese del alcance adjunto. No he tenido sorpresas con los cierres Groovy.

Kevin Cline
fuente
Sería -1 si tuviera suficiente representante, ver más en el enlace de OP: programmers.stackexchange.com/questions/116395/…
sq33G