Как я мог перегрузить переменную черты - PullRequest
0 голосов
/ 20 декабря 2011

Здравствуйте, у меня есть следующее:

trait CarObject{ 
 val name: String
}

def takeCarObject(obj:CarObject)

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

Я пробовал:

private def createCarObject (str: String) = новый CarObject {val name = str}

, но результат не является CarObject!

Ответы [ 2 ]

4 голосов
/ 20 декабря 2011

Это работает:

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 = $anon$1@5143c423

scala> c.name
res0: String = bmw

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

2 голосов
/ 21 декабря 2011

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

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

Полученный тип будет CarObject.

...