Czy Groovy przestrzega zasady korespondencji Tennenta?

15

Oto interesująca dyskusja na temat zasady korespondencji Tennenta i krótki opis Neala Gaftera :

Zasada dyktuje, że wyrażenie lub oświadczenie, gdy jest zapakowane w zamknięcie, a następnie natychmiast przywołane, powinno mieć takie samo znaczenie, jak przed zapakowaniem w zamknięcie. Każda zmiana semantyki podczas zawijania kodu w zamknięciu jest prawdopodobnie wadą języka.

Czy język Groovy jest zgodny z tą zasadą?

Armand
źródło

Odpowiedzi:

4

Nie całkiem, ale prawie. Wszystkie zmienne dostępne w zewnętrznym zakresie są dostępne w zamknięciu, w tym „to” i członkowie danych klasy. Jednak returninstrukcja powraca z zamknięcia, a nie z funkcji zamykającej. Nie jestem nawet pewien, czy jest to naruszenie TCP; Nie znam żadnego języka returnw stylu C, w którym po zamknięciu wraca z otaczającego zakresu. Nie miałem niespodzianek przy użyciu zamknięć Groovy.

Kevin Cline
źródło
Byłbym -1, gdybym miał wystarczającą liczbę powtórzeń, patrz dalej w linku z OP: programmers.stackexchange.com/questions/116395/...
sq33G