在案例类中将参数Option [T]隐式转换为T.

nor*_*oru 1 scala implicit-conversion

我有一个带有选项参数的case类,让我们说:

case class Student(id: Option[Int], name: String)
Run Code Online (Sandbox Code Playgroud)

要获得Student实例,不仅我可以使用Student(Some(1), "anderson"),我还希望这个表单是一种有效的方式Student(2,"Sarah")

我想我必须创建一个Int => Option[Int]并把它放在某个地方.那么最好的方法是什么?

更新

正如评论中提到的,override apply方法将阻止调用它Student.apply _

Bri*_*ent 9

apply在同伴中制作方法可能更容易object.

case class Student(id: Option[Int], name: String)

object Student {
  def apply(id: Int, name: String): Student = {
    Student(Some(id), name)
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我强烈建议将此方法命名为"apply"以外的其他方法. (2认同)