package com.sparktest /** * case class匹配 */ class DataFrameWork //case class 基本就是Java bean,在构造中传参即可 case class ComputationFramework(name: String, popular: Boolean) extends DataFrameWork case class StorageFramework(name: String, popular: Boolean) extends DataFrameWork object helloPatternMatch { def main(args: Array[String]): Unit = { getSalary("Hello", 6) getMatchType(100) getMatchCollection(Array("Scala")) getBigDataType(ComputationFramework("Spark", true)) getValue("Spark",Map("Spark"->"The hottest","Hadoop"->"The olddest")) } def getSalary(name: String, age: Int): Unit = { name match { case "Spark" => println("$150000/year") case "Hadoop" => println("$100000/year") case _ if name == "Scala" => println("$140000/year") //if 守卫 case _ if name == "Hadoop MapRudece" => println("$90000/year") case _name if age >= 5 => println("name:" + _name + "age:" + age + "$120000/year") //变量接受传递的值 case _ => println("$80000/year") } } /** * * 对类型进行匹配 */ def getMatchType(message: Any): Unit = { message match { case i: Int => println("Int") case s: String => println("String") case d: Double => println("Double") case array: Array[Int] => println("Array") case _ => println("Unkown type") } } /** * 对集合进行匹配 */ def getMatchCollection(message: Array[String]): Unit = { message match { case Array("Scala") => println("One Element") case Array("Scala", "Java") => println("Two Elements") case Array("Spark", _*) => println("More Elements bigins with Spark") case _ => println("Unknow Elements") } } /** * case class匹配 */ def getBigDataType(data: DataFrameWork): Unit = { data match { case ComputationFramework(name, popular) => println("ComputationFramework" + "name: " + name + " : " + " : popular :" + popular) case StorageFramework(name, popular) => println("StorageFramework" + "name: " + name + " : " + " : popular :" + popular) case _ => println("Some other type") } } /** * 对Option匹配 */ def getValue(key: String, content: Map[String, String]): Unit = { content.get(key) match { case Some(value) => println(value) case None => println("Not Found") } } }
scala模式匹配使用示例
最新推荐文章于 2020-12-28 11:06:20 发布