2012-03-29 28 views
8

Vấn đề của tôi là hiểu biết là cú pháp của Scala. Tôi đến từ một nền Java. Tôi cố gắng để làm cho một biến kiểu tương tự như lớp nó là trong ví dụ:.Làm thế nào để khởi tạo biến trống từ kiểu của riêng bạn trong Scala?

class Exp { 
var exp1: Exp; 
} 

Tôi nhận được lỗi này:

Driver.scala:4: error: class Exp needs to be abstract, since variable exp1 is not defined 
(Note that variables need to be initialized to be defined) 
    class Exp { 

Ai đó có thể giải thích tại sao tôi không thể làm điều này? Tôi mới đến ngôn ngữ. Bất kỳ lời giải thích nào cũng sẽ giúp hiểu rõ hơn.

Trả lời

16

Vì bạn cần phải khởi tạo nó. Nếu không trình biên dịch cho rằng bạn chỉ muốn giao diện của biến: phương thức getter và setter. Nó rất giống với cách mà một phương pháp không có cơ thể là trừu tượng. Sau đây sẽ khởi tạo nó thành null và cung cấp cho bạn một lớp bê tông hợp lệ với một biến cụ thể.

class Exp { 
    var exp1: Exp = _; 
} 

Sử dụng _ có nghĩa là "giá trị mặc định" mặc định là loại tham chiếu và 0, sai hoặc tương tự cho loại không tham chiếu.

+0

Tôi biết _ có nghĩa là ký tự đại diện trong Scala, nhưng nó thực sự làm gì khi bạn nói vậy? – Andy

+0

Đã thêm một chút câu trả lời về việc sử dụng _ –

+0

Ahh, tôi hiểu. Cảm ơn! – Andy

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