带有 casbah 的 scala 案例类。接受 objectid 参数作为字符串或 objectid

Posted

技术标签:

【中文标题】带有 casbah 的 scala 案例类。接受 objectid 参数作为字符串或 objectid【英文标题】:scala case class with casbah. Accept objectid parameter as string or as a objectid 【发布时间】:2013-08-08 21:10:15 【问题描述】:

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

我一直在用这个case类写数据库

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

让它接受 ObjectId 字符串或 ObjectId 的最佳方法是什么?理想情况下,我只想让案例类将字符串隐式转换为 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")

【讨论】:

以上是关于带有 casbah 的 scala 案例类。接受 objectid 参数作为字符串或 objectid的主要内容,如果未能解决你的问题,请参考以下文章

带有案例类的抽象类的scala circe编码器/解码器

Scala案例类私有构造函数但公共应用方法

Scala案例类私有构造函数但公共应用方法

如何从字符串中提取值以在 Scala 中创建案例类实例

Scala在匹配多个案例类时提取参数以进行理解

Circe Scala - 编码和解码 Map[] 和案例类