Theo như tôi có thể nói, động lực (như được đưa ra trong các liên kết ở trên) là:
"Đương nhiên khi một val được ghi đè, nó không được khởi tạo nhiều hơn một lần Vì vậy, mặc dù x2 trong ví dụ trên. dường như được định nghĩa ở mọi điểm, đây không phải là trường hợp: một val ghi đè sẽ xuất hiện là vô giá trị trong quá trình xây dựng các siêu lớp, như là một val trừu tượng. "
Tôi không hiểu tại sao điều này là tự nhiên chút nào. Hoàn toàn có thể là r.h.s. của bài tập có thể có tác dụng phụ. Lưu ý rằng cấu trúc mã như vậy là hoàn toàn không thể trong cả hai C++ hoặc Java (và tôi sẽ đoán Smalltalk, mặc dù tôi không thể nói cho ngôn ngữ đó). Trong thực tế, bạn phải thực hiện các phép gán kép như vậy ... ticilpmi ... Rõ ràng trong các ngôn ngữ đó thông qua các nhà xây dựng. Trong ánh sáng của r.h.s. tác dụng phụ không chắc chắn, nó thực sự không có vẻ giống như một động lực ở tất cả: khả năng sidestep tác dụng phụ superclass (do đó voiding bất biến superclass) thông qua GIAO? Ick!
Có động cơ "sát thủ" khác để cho phép cấu trúc mã không an toàn như vậy không? Ngôn ngữ hướng đối tượng đã thực hiện mà không có cơ chế như vậy trong khoảng 40 năm (30 năm lẻ, nếu bạn tính từ việc tạo ra ngôn ngữ), tại sao lại bao gồm nó?
Nó ... chỉ ... có vẻ ... nguy hiểm.
Nguồn
2012-10-15 15:15:04
Chúng được mô tả trong phần 20.5 Lập trình trong Scala, nhưng được gọi là "trường khởi tạo trước". –