File: Value_1.scala

package info (click to toggle)
scala 2.11.12-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 62,924 kB
  • sloc: javascript: 28,808; java: 13,415; xml: 3,135; sh: 1,620; python: 756; makefile: 38; awk: 36; ansic: 6
file content (28 lines) | stat: -rw-r--r-- 756 bytes parent folder | download | duplicates (4)
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
  }
}