您的位置:首页 > 其它

scala模式匹配使用示例

2016-12-05 11:10 344 查看
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")
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: