кейс-класс scala с casbah. Принять параметр objectid как строку или как objectid

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

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

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

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


person whitehead1415    schedule 08.08.2013    source источник


Ответы (1)


Вы должны пойти на сопутствующий объект и класс case, например:

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")
person Ross    schedule 09.08.2013