다음은 Tennent 's Correspondence Principle에 대한 흥미로운 토론 과 Neal Gafter 의 간략한 설명입니다 .
원칙에 따르면 클로저에 싸인 후 즉시 호출 할 때 표현식이나 명령문은 클로저에 싸인 전에와 동일한 의미를 가져야합니다. 클로저에 코드를 래핑 할 때 의미의 변화는 언어의 결함 일 수 있습니다.
그루비 언어가이 원칙을 따르고 있습니까?
다음은 Tennent 's Correspondence Principle에 대한 흥미로운 토론 과 Neal Gafter 의 간략한 설명입니다 .
원칙에 따르면 클로저에 싸인 후 즉시 호출 할 때 표현식이나 명령문은 클로저에 싸인 전에와 동일한 의미를 가져야합니다. 클로저에 코드를 래핑 할 때 의미의 변화는 언어의 결함 일 수 있습니다.
그루비 언어가이 원칙을 따르고 있습니까?
답변:
확실하지는 않지만 거의. 외부 범위에서 액세스 할 수있는 모든 변수는 'this'및 클래스 데이터 멤버를 포함하여 클로저에서 액세스 할 수 있습니다. 그러나 return
명령문은 둘러싸 기 함수가 아니라 클로저에서 리턴합니다. 이것이 TCP 위반인지 확실하지 않습니다. return
클로저가 닫는 범위에서 반환 되는 C 스타일 언어를 모르겠습니다 . Groovy 클로저를 사용하는 것에 놀라지 않았습니다.