File: patterns.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 (38 lines) | stat: -rw-r--r-- 961 bytes parent folder | download | duplicates (7)
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
29
30
31
32
33
34
35
36
37
38
trait Option[+a] {}

case class Some[a](x: a) extends Option[a] {
  override def toString(): String = "Some(" + x + ")"
  override def equals(that: Any): Boolean = that match {
    case Some(x) => this.x == x
    case _ => false
  }
  override def hashCode(): Int = getClass().hashCode() * 41 + x.hashCode()
}

case object None extends Option[Nothing] {
  override def toString(): String = "None"
  override def equals(that: Any) = that match {
    case None => true
    case _ => false
  }
  override def hashCode(): Int = getClass().hashCode()
}

object test {

  def println(str: String): Unit = java.lang.System.out.println(str)

  def print(opt: Option[String]) = opt match {
    case Some(x) => println(x)
    case None => println("nothing")
  }
}

// if bodies are duplicated, then we would get an error like "double definition"

trait John[A,B] {
  def filter(x:Any) =    x match {
    case (x::xs, _) => "ga"
    case _ => {x:String => "foobar"}
  }
}