斯卡拉案例类与casbah。接受objectid参数作为字符串或objectid

时间:2013-08-08 21:10:15

标签: scala implicit-conversion case-class casbah

我是scala的新手,并且没有使用java或面向对象编程语言进行任何编程。

我一直在使用这个案例类来写入数据库

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

让它接受ObjectId String或ObjectId的最佳方法是什么?理想情况下,我想让case类隐式地将字符串转换为ObjectId。

1 个答案:

答案 0 :(得分:2)

你应该选择一个伴侣对象和一个案例类,例如:

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")