scala/ScalaBook/chapter-03/partialFunction.scala



val R1 : PartialFunction[Long,Double] = {
  case 0 => Math.POS_INF_DOUBLE
  case 1 => 1.0
  case 2 => 0.5
  case 3 => 1.0/3.0
  case 4 => 0.25
  case 5 => 0.2
  case 6 => 1.0/6.0
  case 7 => 1.0/7.0
  case 8 => 0.125
  case 9 => 1.0/9.0
  case 10 => 0.1
}

val R2 : PartialFunction[Long,Double] = {
  case 11 => 1.0 / 11
  case 12 => 1.0 / 12
}
     
val R = R1 orElse R2

println(R(11)) 

val R5 : PartialFunction[Tuple2[Long,Long],Double] = {
  case (1,2) => 5.0
  case (2,3) => 13.0
}

println(R5(1,2))

def name[T](implicit m: scala.reflect.Manifest[T]) = m.erasure
var z = name[Int => Int]
println(z)