Fahad/Eclipse/ScalaProjects/bin/CodeSamples/PatternMatching.sc
changeset 37 d3eda1846087
equal deleted inserted replaced
36:d205c05e13d6 37:d3eda1846087
       
     1 package CodeSamples
       
     2 
       
     3 object PatternMatching {
       
     4   def matchTest(x: Any): Any = x match {
       
     5     case 1 => "one"
       
     6     case "two" => 2
       
     7     case y: Int => "scala.Int"
       
     8     case _ => "many"
       
     9   }                                               //> matchTest: (x: Any)Any
       
    10 
       
    11   matchTest("Two")                                //> res0: Any = many
       
    12   matchTest("Test")                               //> res1: Any = many
       
    13   matchTest(1)                                    //> res2: Any = one
       
    14   matchTest(2)                                    //> res3: Any = scala.Int
       
    15 
       
    16   def matchTest2(x: Any) {
       
    17     x match {
       
    18       case 1 => "one"
       
    19       case "two" => 2
       
    20       case y: Int => "scala.Int"
       
    21       case _ => "many"
       
    22     }
       
    23   }                                               //> matchTest2: (x: Any)Unit
       
    24 
       
    25   //Matching Using case Classes
       
    26   case class Person(name: String, age: Int)
       
    27 
       
    28   def caseClassTest(): Unit = {
       
    29     val alice = new Person("Alice", 25)
       
    30     val bob = new Person("Bob", 32)
       
    31     val charlie = new Person("Charlie", 32)
       
    32 
       
    33     for (person <- List(alice, bob, charlie)) {
       
    34       person match {
       
    35         case Person("Alice", 25) => println("Hi Alice!")
       
    36         case Person("Bob", 32) => println("Hi Bob!")
       
    37         case Person(name, age) =>
       
    38           println("Age: " + age + " year, name: " + name + "?")
       
    39       }
       
    40     }
       
    41   }                                               //> caseClassTest: ()Unit
       
    42 
       
    43   caseClassTest()                                 //> Hi Alice!
       
    44                                                   //| Hi Bob!
       
    45                                                   //| Age: 32 year, name: Charlie?
       
    46 }