2013-07-08 28 views

Trả lời

27

Lý do rõ ràng là giúp không để biến không được khởi tạo. Lưu ý rằng trong khai báo của bạn mà không cần khởi tạo, bạn cũng sẽ cần phải xác định loại.

var x: Type; 

cung cấp cho các lỗi sau:

only classes can have declared but undefined members (Note that variables need to be initialized to be defined)

Trên thực tế chỉ có các lớp trừu tượng có thể khai báo các thành viên mà không cần định nghĩa chúng. Bạn vẫn có thể nhận được các hành vi mong muốn (biến khởi tạo một giá trị mặc định) như

var x: Type = _ 

Nếu Type là một loại tài liệu tham khảo, x sẽ null. Kịch bản này là hữu ích, ví dụ, trong trường hợp một phương thức factory hoàn thành việc khởi tạo một đối tượng sau khi xây dựng đối tượng.

+0

Giải thích tốt về trường hợp 'var'. Vì bạn không thể gán lại các định danh 'val' sau khi khai báo, việc dỡ bỏ hạn chế này sẽ khuyến khích sự gia tăng của nhiều tên cho' null'. Mà sẽ là xấu. –

+1

Tôi sao chép và dán ví dụ của bạn với 'var x: Long = _' nhưng nó cho tôi lỗi:' Các biến cục bộ phải được khởi tạo'. Có thêm người mới đến Scala cần biết để sử dụng giải pháp của bạn không? Ví dụ, như OP đang yêu cầu một kiểu số, cái gì sẽ là một số thích hợp 'Loại' để sử dụng cho' x'? – ecoe

+0

Như bạn có thể thấy, ký hiệu 'var ... = _' sẽ chỉ hoạt động đối với các thành viên của lớp chứ không phải cho các biến cục bộ. Tôi tin rằng không có bất kỳ tình huống nào đảm bảo các biến cục bộ chưa được khởi tạo. –

Các vấn đề liên quan