美文网首页
模式匹配

模式匹配

作者: lehuai | 来源:发表于2018-01-03 12:28 被阅读0次

    模式匹配之字符串

    package day03.matchdemo
    
    import scala.util.Random
    
    /**
      * 匹配字符串
      */
    object MatchStr {
      def main(args: Array[String]): Unit = {
    
        val arr = Array("xuezhiqian","huachenyu","yangmi","feiyuqing")
        val name = arr(Random.nextInt(arr.length))
    
        println(name)
    
        name match {
          case "xuezhiqian" => println("薛之谦")
          case "huachenyu" => println("华晨宇")
          case "yangmi" => println("杨幂")
          case "feiyuqing" => println("费玉清")
          case _ => println("Nothing")
        }
      }
    }
    

    模式匹配之匹配类型

    package day03.matchdemo
    
    import scala.util.Random
    
    object MatchType {
    
      def main(args: Array[String]): Unit = {
    
        val arr = Array("abcde",100,3.14,true,MatchType)
    
        val element = arr(Random.nextInt(arr.length))
    
        println(element)
    
        element match {
          case str: String => println(s"match String: $str")
          case int: Int => println(s"match Int: $int")
          case bool: Boolean => println(s"match Boolean: $bool")
          case matchTest: MatchTest => println(s"match MatchTest: $matchTest")
          case _: Any => println("Not Matched")
        }
      }
    }
    
    class MatchTest {
    
    }
    

    模式匹配之匹配数组、元组、集合

    package day03.matchdemo
    
    /**
      * 匹配数组、元组、集合
      */
    object MatchList {
    
      def main(args: Array[String]): Unit = {
    
        // 匹配数组
    //    val arr = Array(3,2,5,7)
    //
    //    arr match {
    //      case Array(3,a,b,c) => println(s"case:$a,$b,$c")
    //      case Array(_,x,y) => println(s"case:$x,$y")
    //      case _ => println("Not Matched")
    //    }
    
        // 匹配元组
    //    val tup = (2,3,4)
    //
    //    tup match {
    //      case (3,a,b) => println(s"case: $a,$b")
    //      case (_,x,y) => println(s"case: $x,$y")
    //      case _ => println("Not Matched")
    //    }
    
        //匹配集合
        val list1 = List(0,1,2,3)
    
        list1 match {
          case 0 :: Nil => println("case: 0")
    //      case 0 :: x :: y :: z :: Nil => println("case: 0")
          //      case List(0,a,b,c) => println("case: 0")
          case a :: b :: c :: d :: Nil => println(s"case2: $a,$b,$c,$d")
          case 0 :: a => println(s"case: $a")
          case _ => println("Not Matched")
        }
      }
    }
    
    

    模式匹配之样例类

    package day03.matchdemo
    
    import scala.util.Random
    
    object CaseClassDemo {
      def main(args: Array[String]): Unit = {
    
        val arr = Array(CheckTimeOutTask,SubmitTask("1000","task-00001"),HeartBeat(3000))
    
        arr(Random.nextInt(arr.length)) match {
          case CheckTimeOutTask => println("CheckTimeOutTask")
          case SubmitTask(port,task) => println("SubmitTask")
          case HeartBeat(time) => println("HeartBeat")
        }
      }
    }
    
    case class HeartBeat(time: Long)
    case class SubmitTask(id: String, taskName: String)
    case object CheckTimeOutTask
    

    模式匹配之偏函数

    package day03.matchdemo
    
    /**
      * PartialFunction[A,B],其中A是参数类型,Bshi返回值类型,PartialFunction(偏函数)常用作输入模式匹配
      */
    object PartialFunctionDemo {
    
      def m1: PartialFunction[String,Int] = {
        case  "one" => {
          println("case 1")
          1
        }
        case "two" => {
          println("case 2")
          2
        }
      }
    
      def m2(num: String): Int = num match {
        case "one" => 1
        case "two" => 2
        case _ => 0
      }
      def main(args: Array[String]): Unit = {
    
        println(m1("one"))
        println(m2("two"))
    
      }
    }
    
    

    相关文章

      网友评论

          本文标题:模式匹配

          本文链接:https://www.haomeiwen.com/subject/aathnxtx.html