zoukankan      html  css  js  c++  java
  • Scala的模式匹配

    一:普通的模式匹配

    1.概述

      

      

    2.程序示例(普通的示例)

     1 package ty
     2 
     3 object MatchCaseTest {
     4   def main(args: Array[String]): Unit = {
     5     judgeGrade("B")
     6   }
     7   def judgeGrade(grade:String): Unit ={
     8     grade match {
     9       case "A"=>println("Excellent")
    10       case "B"=>println("Good")
    11       case "C"=>println("so")
    12       case _=>println("bad")
    13     }
    14   }
    15 }

    3.效果

      

    4.if守卫

     1 package ty
     2 
     3 object MatchCaseTest {
     4   def main(args: Array[String]): Unit = {
     5     judgeGrade("B","tom")
     6     judgeGrade("E","tom")
     7   }
     8   def judgeGrade(grade:String,name:String ): Unit ={
     9     grade match {
    10       case "A"=>println("Excellent")
    11       case "B"=>println("Good")
    12       case "C"=>println("so")
    13       case _ if name=="tom"=>println("very good")
    14       case _=>println("bad")
    15     }
    16   }
    17 }

    5.效果

      

    二:Array模式匹配 

    1.模式匹配(Array)

      

    2.程序示例(Array)

     1 package ty
     2 
     3 object ArrayMatch {
     4   def main(args: Array[String]): Unit = {
     5     judge(Array("x1"))
     6     judge(Array("X2","X3","X4"))
     7     judge(Array("caojun","ui"))
     8   }
     9   def judge(arr:Array[String]): Unit ={
    10     arr match {
    11         //完全匹配
    12       case Array("x1")=>println("x1")
    13         //个数匹配
    14       case Array(a,b,c)=>println(a,b,c)
    15         //某一个元素打头
    16       case Array("caojun",_*)=>println("caojun start")
    17       case _=>println("======")
    18     }
    19   }
    20 }

    3.效果

      

    三:List模式匹配

    1.模式匹配(List)

      

    2.程序示例

     1 package ty
     2 
     3 object ListMatch {
     4   def main(args: Array[String]): Unit = {
     5     judge(List("ui"))
     6     judge(List("jj","hh","ff"))
     7     judge(List("lao","li"))
     8   }
     9   def judge(list:List[String]): Unit ={
    10     list match {
    11       case "ui"::Nil=>println("ui")
    12       case b1::b2::b3::Nil=>println(b1+","+b2+","+b3)
    13       case "lao"::tail=>println("hi lao start")
    14       case _=>println("===")
    15     }
    16   }
    17 }

    3.效果

      

    四:遍历与模式匹配结合

    1.遍历

     1 package ty
     2 
     3 object ForMatch {
     4   def main(args: Array[String]): Unit = {
     5     "hello world" foreach(c=>println(
     6       c match {
     7         case ' ' =>"space"
     8         case ch =>"Char:"+ch
     9       }
    10     ))
    11   }
    12 }

    2.效果

      

    五:样例类

    1.模式匹配(case class)

      

    2.程序示例(传统)

     1 package ty
     2 class S(name:String,age:Int){
     3   def say=println("hello")
     4 }
     5 object S{
     6   def apply(name: String, age: Int): S = new S(name, age)
     7 }
     8 object TraditionMatch {
     9   def main(args: Array[String]): Unit = {
    10     var s=S("zahngsan",20)
    11     s.say
    12   }
    13 }

    3.效果

      

     4.程序示例(case class)

     1 package ty
     2 case class R(name:String,age:Int){
     3   def say=println("hi")
     4 }
     5 object CaseClass {
     6   def main(args: Array[String]): Unit = {
     7     var r=R("lisi",32)
     8     r.say
     9   }
    10 }

    5.效果

      

    六:类模式匹配

    1.程序示例,模式匹配(匹配类)  

     1 package ty
     2 
     3 //定义一个类
     4 class Per
     5 case class TT(name:String,project:String) extends Per{
     6 
     7 }
     8 case class SS(name:String,room:String) extends Per{
     9 
    10 }
    11 class JudgeClass(){
    12   def judge(per:Per){
    13     per match {
    14       case TT(name,project)=>println(name+","+project)
    15       case SS(name,room)=>println(name+","+room)
    16       case _=>println("===")
    17     }
    18   }
    19 }
    20 object ClassMatch {
    21   def main(args: Array[String]): Unit = {
    22     var t=TT("tom","en")
    23     var s=SS("Bob","202")
    24     new JudgeClass().judge(t)
    25   }
    26 }

    3.效果

      

      

  • 相关阅读:
    ios 数据类型转换 UIImage转换为NSData NSData转换为NSString
    iOS UI 12 block传值
    iOS UI 11 单例
    iOS UI 08 uitableview 自定义cell
    iOS UI 07 uitableviewi3
    iOS UI 07 uitableviewi2
    iOS UI 07 uitableview
    iOS UI 05 传值
    iOS UI 04 轨道和动画
    iOS UI 03 事件和手势
  • 原文地址:https://www.cnblogs.com/juncaoit/p/6256199.html
Copyright © 2011-2022 走看看