package basics /** * 模式匹配 */ class DataFrameWork case class ComputeionFramework(name: String, popular: Boolean) extends DataFrameWork { } case class StorageFramework() extends DataFrameWork object HelloPattenMatch { def main(args: Array[String]): Unit = { /*getSalary("Hadoops") getSalary("test") getSalary("asdf", 20) getMatchType(100.0) //匹配数据类型 getbigdatatype(ComputeionFramework("Spark", false)) getMatchCollection(Array("scala"))*/ getvalue("spark host", Map("spark host" -> "The hotts")) } //对字符串的匹配 def getSalary(name: String) { name match { case "Spark" => println("10000") case "Java" => println("900") case "Hadoop" => println("1000") case _ if name == "test" => println("----") case _ => println("ssss") //代表其他 } } def getSalary(name: String, age: Int) { name match { case "Spark" => println("10000") case "Java" => println("900") case "Hadoop" => println("1000") case _str if age >= 10 => println("uuuuu") //用变量的方式代表其他 case _ => println("ssss") //代表其他 } } //对数据类型的匹配 def getMatchType(msg: Any) { msg match { case i: Int => println("Integer") case s: String => println("String") case d: Double => println("Double") case _ => println("other") } } //匹配集合中元素類型 def getMatchCollection(msg: Array[String]) { msg match { case Array("scala") => println("one") case Array("scala", "java") => println("Two") case Array("scala", _*) => println("Many") //有很多元素 case _ => println("other") } } //对类的匹配 def getbigdatatype(data: DataFrameWork) { data match { case ComputeionFramework(name, false) => println("直接匹配類" + name) case StorageFramework() => println("1111") case _ => println("other") } } //对map的匹配 def getvalue(key: String, content: Map[String, String]) { content.get(key) match { case Some(value) => //对option的匹配 println("打印:" + value) case None => println("not found") } } }
第13节:scala编程之模式匹配
最新推荐文章于 2024-06-21 17:48:32 发布