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ą?

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.


Byłbym -1, gdybym miał wystarczającą liczbę powtórzeń, patrz dalej w linku z OP: programmers.stackexchange.com/questions/116395/...
sq33G
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.