Groovy có tuân theo Nguyên tắc Tương ứng của Tennent không?


15

Đây là một cuộc thảo luận thú vị về Nguyên tắc Tương ứng của Tennent và một mô tả ngắn gọn từ Neal Gafter :

Nguyên tắc ra lệnh rằng một biểu thức hoặc câu lệnh, khi được bọc trong một bao đóng và sau đó được gọi ngay lập tức, phải có cùng ý nghĩa như trước khi được đóng trong một bao đóng. Bất kỳ thay đổi về ngữ nghĩa khi gói mã trong một bao đóng có thể là một lỗ hổng trong ngôn ngữ.

Liệu ngôn ngữ Groovy có tuân theo nguyên tắc này?

Câu trả lời:


4

Không hẳn, nhưng gần như vậy. Tất cả các biến có thể truy cập trong phạm vi bên ngoài đều có thể truy cập được trong bao đóng, bao gồm 'this' và các thành viên dữ liệu lớp. Tuy nhiên, một returncâu lệnh trả về từ bao đóng, không phải từ hàm kèm theo. Tôi thậm chí không chắc chắn đó là vi phạm TCP; Tôi không biết bất kỳ ngôn ngữ kiểu C nào returntrong trường hợp đóng lại trả về từ phạm vi kèm theo. Tôi đã không có bất ngờ khi sử dụng Groovy đóng cửa.


Sẽ là -1 nếu tôi có đủ đại diện, hãy xem thêm trong liên kết từ OP: lập trình
viên.stackexchange.com/questions/116395/ mẹo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.