2012-03-29 12 views
8

私の問題は、Scalaの構文です。私はJavaの背景から来ています。私はそれがであるクラスと同じ型の変数を作成しようとしています例:。空の変数をScalaで独自の型から初期化するには?

class Exp { 
var exp1: Exp; 
} 

私はこのエラーを取得しています:私はこれを行うことができない理由

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 { 

誰かが説明できますか?私はその言語を初めて使う人です。どんな説明もそれをよりよく理解するのに役立ちます。

答えて

16

初期化する必要があるためです。それ以外の場合、コンパイラは変数のインターフェイスだけを必要としているとみなします。getterメソッドとsetterメソッドです。これは、ボディがないメソッドが抽象的である方法と非常によく似ています。以下はnullに初期化し、具体的な変数を持つ有効な具象クラスを提供します。

class Exp { 
    var exp1: Exp = _; 
} 

_の使用はデフォルトでは参照型と0、偽、または非参照型のために何か似ためのnullである「デフォルト値」を意味します。

+0

私はScalaでワイルドカードを意味することを知っていますが、あなたがそれを言うと実際に何をしていますか? – Andy

+0

その使用についての答えにもう少し追加されました_ –

+0

ああ、そうです。ありがとう! – Andy

関連する問題