在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")
}
}
}
}
大致核心的操作就是这几类,大家用的时候围绕发散就可以了