Fahad/CodeSamples/ExtractorObjects.scala
author Christian Urban <christian dot urban at kcl dot ac dot uk>
Fri, 18 Dec 2015 10:11:01 +0000
changeset 84 f89372781a4c
parent 44 a751aa1ee4f7
permissions -rw-r--r--
the algorithm is correct according to the Type Inference definition

package Main

object Twice {
  def apply(x: Int): Int = x * 2
  def unapply(z: Int): Option[Int] = if (z % 2 == 0) Some(z / 2) else None
}

object TwiceTest extends App {
  val x = Twice(10)
  x match { case Twice(n) => Console.println(n) } //prints 21
}