美文网首页
模式匹配

模式匹配

作者: 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"))

  }
}

相关文章

  • 模式匹配

    模式匹配之字符串 模式匹配之匹配类型 模式匹配之匹配数组、元组、集合 模式匹配之样例类 模式匹配之偏函数

  • 多模式串匹配 - AC 自动机

    多模式串匹配概念 多模式串匹配,即多个模式串在一个主串中进行匹配。 虽然单模式串也能完成多模式串的匹配,但每个模式...

  • Scala模式匹配

    模式匹配match 模式匹配不仅可以匹配值(case 1)还可以匹配类型(case s:String) 匹配过程有...

  • 正则表达式懒惰型元字符匹配 ?

    懒惰匹配模式即表示以最少的匹配量返回匹配个数,默认是非懒惰匹配模式 表达式 匹配结果:

  • scala 模式匹配的几个模式

    Scala 的模式匹配是类似与正则匹配的的模式匹配,但是不仅仅如此,它还可以匹配对象的内在的构建形式. 模式匹配就...

  • 模式匹配

    模式匹配 sql模式匹配允许使用"_"匹配任何单个字符,"%"匹配任意数目字符(包括零字符)。使用sql模式时,不...

  • Scala中的模式匹配

    简单匹配 模式匹配常用于match语句: 变量使用 模式匹配case中可以使用变量来获取参数值 类型匹配 守卫匹配...

  • web开发常识

    .gitignore规则 匹配模式前 / 代表项目的根目录 匹配模式最后加 / 代表是目录 匹配模式前加!代表取反...

  • 模式匹配

    模式 模式类型 通配符模式 _ 匹配任何值 _? 匹配非nil值 标识符模式 值绑定模式 元组模式 枚举case模...

  • Swift-模式匹配

    模式就是匹配的规则,下面介绍Swift中的模式。 1. 通配符模式 _匹配任何值,_?匹配非nil值。 2. 标识...

网友评论

      本文标题:模式匹配

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