Đây là những gì xảy ra khi tôi cố gắng đi vào những cạm bẫy mà bạn đã đề cập trong Squeak và Dolphin, hai cách triển khai ngôn ngữ động Smalltalk 80.
Bạn có thể gán cho một biến với một cái tên ngẫu nhiên mà không bao giờ được đọc
Ngôn ngữ Smalltalk đòi hỏi nhiệt độ và dụ các biến được khai báo. Nếu tôi cố gắng biên dịch một phương thức có chứa một biến không xác định, tôi nhận được một lỗi biên dịch thời gian.
| anArray |
anArrray := Array with: 2 with: 1. "Unknown variable anArrray"
biến Tạo động không phải là một cái gì đó ngôn ngữ động phải cho phép. Có sự khác biệt giữa các khai báo không cần thiết và không có khai báo nào cả.
Bạn có thể gọi các phương thức không tồn tại
Vấn đề biên dịch một cảnh báo nếu bạn sử dụng một selector (ví dụ: phương pháp tên) đó là hoàn toàn vô danh.
Trình biên dịch sẽ không bận tâm nếu tôi gọi phương thức paint
trên một mảng vì có một lớp khác trong hệ thống đang triển khai paint
. Lỗi đó sẽ chỉ bị bắt khi chạy.
Nếu tuy nhiên tôi gọi phương thức sortt
(trong khi tôi định gọi sort
) trình biên dịch tạo cảnh báo. Khi phát triển từ trên xuống, bạn có thể tiến hành vượt qua các cảnh báo này.
| anArray |
anArray := Array with: 2 with: 1.
anArray paint. "Runtime error. You can't paint an array but perhaps a Shape"
anArray sortt. "Compile-time warning"
bạn có thể tham khảo các lớp học không tồn tại
này không được phép. Mặc dù trong Squeak bạn có thể nhanh chóng tạo ra một lớp mới từ hộp thoại báo lỗi nếu cần thiết.
Nguồn
2010-03-11 23:04:05
Bạn có thể muốn giải thích về loại lỗi đánh máy, cụ thể là nơi nó xảy ra. – NomeN
Ý của bạn là - cho đến khi thời gian chạy? –
Bạn dường như xem xét "thân thiện" là "không phàn nàn khi tôi thực hiện một lỗi đánh máy cho đến khi nó cần phải được thực hiện". Tôi nghĩ rằng định nghĩa ngược lại tốt hơn. Trình thông dịch "thân thiện" là một trình phân tích cú pháp và mã và tìm kiếm lỗi chính tả và cung cấp cho tôi một lỗi trước khi thực thi thực tế. – shoosh