Scala知识点20---match

在JAVA中有switch,scala有match,而且在应用上比JAVA的更加灵活,JAVA可以接收如下六种数据类型,如下

1、int
2、char
3、byte
4、short
5、枚举
6、 String  JDK版本必须为1.7及以上版本

附带C++的:
https://blog.csdn.net/dudadudadd/article/details/112430159

而scala的match就比较nice了,除了所有基础数据类型之外,match还可以对数据的格式进行匹配,下面我给大家列举了如下的使用方法

对值进行匹配,通配符为其他

package com.wy

import scala.util.Random

object CaseDemo01 {
  def main(args: Array[String]): Unit = {
    val arr = Array("hadoop", "zookeeper", "spark")
    val name = arr(Random.nextInt(arr.length))
    name match {
      case "hadoop"    => println("大数据分布式存储和计算框架...")
      case "zookeeper" => println("大数据分布式协调服务框架...")
      case "spark"     => println("大数据分布式内存计算框架...")
      case _ => println("我不认识你...")
    }
  }
}

对值的类型做匹配,且书写的表达式,可以带入后面做相关操作

package com.wy

import scala.util.Random

object CaseDemo02{
  def main(args: Array[String]): Unit = {
    val arr = Array("hello", 1, 2.0, CaseDemo02)
    val v = arr(Random.nextInt(4))
    println(v)
    v match {
      case x: Int => println("Int " + x)
      case y: Double if(y >= 0) => println("Double "+ y)
      case z: String => println("String " + z)
      case _ => throw new Exception("not match exception")
    }
  }
}

对数据的格式做匹配,其中_*标识多位的任意数

package com.wy

object CaseDemo03 {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4)
    arr match {
      case Array(1, x, y) => println(x + " " + y)
      case Array(0) => println("only 0")
      case Array(0, _*) => println("0 ...")
      case _ => println("something else")
    }

    val tup = (1, 3, 5)
    tup match {
      case (1, x, y) => println(s"1, $x , $y")
      case (_, z, 5) => println(z)
      case  _ => println("else")
    }
  }
}

对容器中的一个值做匹配

package com.wy

import scala.util.Random

case class SubmitTask(id: String, name: String)
case class HeartBeat(time: Long)
case object CheckTimeOutTask //object CheckTimeOutTask

object CaseDemo04 {
  def main(args: Array[String]): Unit = {

    val arr = Array(CheckTimeOutTask, HeartBeat(12333), SubmitTask("0001", "task-0001"))

    arr(Random.nextInt(arr.length)) match {
      case SubmitTask(id, name) => {
        println(s"$id, $name")
      }
      case HeartBeat(time) => {
        println(time)
      }
      case CheckTimeOutTask => {
        println("check")
      }
    }
  }
}

大致核心的操作就是这几类,大家用的时候围绕发散就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值