Ale*_*ack 6 scala nullable option
我需要返回值,当有人要求值时,告诉他们三件事之一:
案例2与案例3略有不同.示例:
val radio = car.radioType
Run Code Online (Sandbox Code Playgroud)
我以为我可以扩展scala的None并创建一个Unknown,但这似乎不可能.
建议?
谢谢!
更新:
理想情况下,我希望能够编写如下代码:
car.radioType match {
case Unknown =>
case None =>
case Some(radioType : RadioType) =>
}
Run Code Online (Sandbox Code Playgroud)
Mit*_*ins 13
这是一个准确的实现.您可能希望查看一些铃声和口哨的Option类的源代码:
package example
object App extends Application {
val x: TriOption[String] = TriUnknown
x match {
case TriSome(s) => println("found: " + s)
case TriNone => println("none")
case TriUnknown => println("unknown")
}
}
sealed abstract class TriOption[+A]
final case class TriSome[+A](x: A) extends TriOption[A]
final case object TriNone extends TriOption[Nothing]
final case object TriUnknown extends TriOption[Nothing]
Run Code Online (Sandbox Code Playgroud)
不要告诉任何我建议的人,但你总是可以使用null来表示Unknown,而不是写一个新类.
car.radioType match {
case null =>
case None =>
case Some(radioType : RadioType) =>
}
Run Code Online (Sandbox Code Playgroud)