2011-12-20 1 views
0

Привет У меня есть follwong:Как я мог перегрузить черт переменной

trait CarObject{ 
val name: String 
} 

def takeCarObject(obj:CarObject) 

Как я мог подготовить признак объект, CarObject, и передать его в метод?

Я пробовал:

частное Защиту createCarObject (ул: String) = новый CarObject {вал имя = ул}

но результат не 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 

Примечание: Если вы явно не установить возвращаемое значение метода, возвращаемое значение java.lang.Object with XXX выводится, где в этом случае XXX является CarObject.

+0

Спасибо. Это новая информация для меня. – Echo

2

Также вы можете попробовать создать его так:

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

Результирующий тип будет CarObject.

Смежные вопросы