0515.樣式匹配(Pattern Matching)

Pattern Matching

Scala 擁有一個內置的通用樣式匹配結構. 它允許在任意資料樣式上進行首要匹配策略. 最大的特點可以用來取代 if ... else 的撰寫.

與 Java - switch( ) 最大不同處:
  1. 可以是任何類型的常數值甚至任意物件
  2. 每一個 case 的處理後隱性即為 break
  3. 多條件值, 但需要同樣處理時, 使用 "|" 做為間隔
    1. case 22 | 33 => ...
  4. => 之後可以為處理式, 或者隱式為 return 值

scala> def check(n: Int): Boolean = {
     | n match {
     | case 1 => return true        
     | case 2 => return true        
     | case _ => return false       
     | }
     | }
check: (n: Int)Boolean

scala> check(3)
res0: Boolean = false

scala> check(2)
res1: Boolean = true

Function format

scala> object PatternDemo {         
     | def check(n: Int) = n match {                    
     | case 1 => true        
     | case 2 => true               
     | case _ => false              
     | }                            
     | }
defined module PatternDemo






object MatchTest1 {
  def main(args : Array[String]) : Unit = {
          def matchtest(x: Any) : Any = x match {
              case 4 => "Hello"
              case "99" => 1
              case _ => "any"
          }
          println(matchtest("99"))
  }
 
}



References



Comments