<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">object helloPatternMatch { </span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">def main(args: Array[String]): Unit = { </span>
getSalary("Spark")
getSalary("Hadoop")
getSalary("Scala")
<span style="font-family: Arial, Helvetica, sans-serif;"> getSalary("test",6) //第二个参数作判断条件</span>
}
def getSalary(name: String) {
name match {
case "Spark" => println("$150000/year")
case "Hadoop" => println("$100000/year")
case _ if name == "Scala" => println("$140000/year")
case _ if name == "Hadoop Mapreduce" => println("$90000/year")
case _ => println("$80000/year")
}
}
def getSalary(name: String, age: Int) {
name match {
case "Spark" => println("$150000/year")
case "Hadoop" => println("$100000/year")
case _ if name == "Scala" => println("$140000/year")
case _ if name == "Hadoop Mapreduce" => println("$90000/year")
case _name <span style="color:#ff6666;">if age >= 5 </span> => println("$95000/year")
case _ => println("$80000/year")
}
}
Result:
$150000/year
$100000/year$140000/year
$95000/year
main方法中调用:
getMatchType(100)
getMatchType(100.0)
getMatchType(Array(13,15))
getMatchType(Array("Spark","Scala"))
def getMatchType(msg: Any) {
msg match {
case i: Int => println("Integer")
case s: String => println("String")
case d: Double => println("Double")
case array: Array[Int] => println("Array")
case _ => println("Unknown Type")
}
}
Result:
Integer
DoubleArray
Unknown Type
main方法中调用
getMatchCollection(Array("Scala","Python")); //不在前三个结果范围内, 第4个case
getMatchCollection(Array("Scala","Java")); //第二个case
getMatchCollection(Array("Spark","Java","hahaha"));//第一个是Spark值,3个值,符合第3个case
def getMatchCollection(msg: Any) {
msg match {
case Array("Scala") => println("One element")
case Array("Scala", "Java") => println("Twp elements")
case Array("Spark", _*) => println("Many elements")
case _ => println("Unknown Type")
}
}
Unknown Type
Twp elements
Many elements
定义class及case class
class DataFrameWork
case class ComputationFramework(name: String, popular: Boolean) extends DataFrameWork
case class StorageFramework(name: String, popular: Boolean) extends DataFrameWork
main方法中调用:
getBigDataType(ComputationFramework("Spark", true))
getBigDataType(ComputationFramework("Spark", false))
getBigDataType(StorageFramework("HDFS", false))
def getBigDataType(data: DataFrameWork) {
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")
}
}
Result:
ComputationFramework : name : Spark, popular:true
ComputationFramework : name : Spark, popular:false
StorageFramework : name : HDFS, popular:false
main方法中调用:
getValue("Spark", Map("Spark" -> "The hottest!", "Hadoop" -> "Other"))
getValue("Hadoop", Map("Spark" -> "The hottest!", "Hadoop" -> "Other"))
getValue("Scala", Map("Spark" -> "The hottest!", "Hadoop" -> "Other"))
def getValue(key: String, context: Map[String, String]) {
context.get(key) match {
case Some(value) => println(value)
case None => println("Not Found")
}
}
Result:
The hottest!
Other
Not Found