blob: 2440609b9ee079b7aab0b6782cc85738f7e50e0a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
final class Opt[+A >: Null](val value: A) extends AnyVal {
def get: A = value
def isEmpty = value == null
}
object Opt {
final val None = new Opt[Null](null)
def unapply[A >: Null](x: A): Opt[A] = if (x == null) None else Opt(x)
def empty[A >: Null] = None
def apply[A >: Null](value: A): Opt[A] = if (value == null) None else new Opt[A](value)
}
class ValueExtract {
def unapply(x: Any): Opt[String] = x match {
case _: String => Opt("String")
case _: List[_] => Opt("List")
case _: Int => Opt("Int")
case _ => Opt.None
}
}
class Direct {
def unapply(x: Any): String = x match {
case _: String => "String"
case _: List[_] => "List"
case _: Int => "Int"
case _ => null
}
}
|