2013-08-08 1 views
0

Я отчасти новичок в scala и не программировал в Java или объектно-ориентированных языках программирования.scala кейс класс с casbah. Примите параметр objectid как строку или как objectid

Я использовал этот случай класса для записи в базу данных

case class User(id: new ObjectId, name: String) 

Что является лучшим способом, чтобы это либо принять ObjectId String, или ObjectId? В идеале я бы хотел, чтобы класс case неявно преобразовывал строку в ObjectId.

ответ

1

Вы должны пойти для объекта-компаньона и случай класса, например:

object User { 
    def apply(name: String): User = User(new ObjectId(), name) 

    def apply(id: String, name: String): User = User(new ObjectId(id), name) 
} 

case class User(id: ObjectId, name: String) 

Тогда вы можете обращаться либо эти случаи:

val user = User("Ross") 
val user1 = User("5204b74d9932e8319b8e9ec0", "Ross") 
val user2 = User(new ObjectId(), "Whitehead")