2011-12-20 10 views
0

こんにちは、私はfollwongを持っている特性変数をオーバーロードすることができます:はどうすれば

trait CarObject{ 
val name: String 
} 

def takeCarObject(obj:CarObject) 
私は形質オブジェクト、CarObjectを用意し、それをメソッドに渡すことができるどのように

私が試してみました:createCarObject(文字列:文字列)DEF

プライベートは新しいCarObject {valの名= STR}

を=が、結果はCarObjectではありません!

答えて

4

これが行う作業:

scala> trait CarObject { val name: String } 
defined trait CarObject 

scala> def createCarObject(str: String) = new CarObject { val name = str } 
createCarObject: (str: String)java.lang.Object with CarObject 

scala> def createCarObject(str: String): CarObject = new CarObject { val name = str } 
createCarObject: (str: String)CarObject 

scala> val c = createCarObject("bmw") 
c: CarObject = [email protected] 

scala> c.name 
res0: String = bmw 

注意:あなたが明示的にメソッドに戻り値を設定しない場合、この場合、XXXがCarObjectある場合、戻り値java.lang.Object with XXXが、推測されます。

+0

ありがとうございます。私にとっては新しい情報です。 – Echo

2

また、あなたはこのようにそれを作成してみてくださいすることができます

(new CarObject { val name = str}):CarObject 

結果の型はCarObjectだろう。