package com.dtspark.scala.basics
class DataFrameWork
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 = {
println("\n#getSalary#")
getSalary("Spark")
getSalary("Hadoop")
getSalary("Scala")
getSalary("test", 6)
println("\n#getMatchType#")
getMatchType(100)
getMatchType(100.0)
getMatchType(Array(13, 15))
getMatchType(Array("Spark", "Scala"))
println("\n#getMatchCollection#")
getMatchCollection(Array("Scala", "Python"));
getMatchCollection(Array("Scala", "Java"));
getMatchCollection(Array("Spark", "Java", "hahaha"));
println("\n#getValue#")
getValue("Spark", Map("Spark" -> "The hottest!", "Hadoop" -> "Other"))
getValue("Hadoop", Map("Spark" -> "The hottest!", "Hadoop" -> "Other"))
getValue("Scala", Map("Spark" -> "The hottest!", "Hadoop" -> "Other"))
println("\n#getBigDataType#")
getBigDataType(ComputationFramework("Spark", true))
getBigDataType(ComputationFramework("Spark", false))
getBigDataType(StorageFramework("HDFS", false))
}
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 if age >= 5 => println("$95000/year")
case _ => println("$80000/year")
}
}
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")
}
}
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")
}
}
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")
}
}
def getValue(key: String, context: Map[String, String]) {
context.get(key) match {
case Some(value) => println(value)
case None => println("Not Found")
}
}
}
运行结果:
#getSalary#
$150000/year
$100000/year
$140000/year
$95000/year
#getMatchType#
Integer
Double
Array
Unknown Type
#getMatchCollection#
Unknown Type
Twp elements
Many elements
#getValue#
The hottest!
Other
Not Found
#getBigDataType#
ComputationFramework : name : Spark, popular:true
ComputationFramework : name : Spark, popular:false
StorageFramework : name : HDFS, popular:false