本节课主要讲解:
1、对值进行模式匹配
2、对类型进行模式匹配
3、对集合进行模式匹配
4、对case class进行模式匹配
5、Option操作
本节课详细视频地址:http://my.tv.sohu.com/us/299637343/84752980.shtml
课程代码如下:
package com.dt.scala
class People
case class Teacher(name: String, age: Int) extends People
case class Worker(name: String, age: Int) extends People
object HelloPatternMatch {
def main(args: Array[String]): Unit = {
//对值进行模式匹配
getSalary("Spark", 6)
getSalary("Hadoop MR", 10)
//对类型进行模式匹配
getMatchType(100.9)
//对集合进行模式匹配
getCollect(Array("Scala", "Tachyon"))
//case class模式匹配
getMatchClass(Teacher("Spark", 6))
getMatchClass(Worker("Hadoop", 11))
//option操作
getValue("Spark", Map("Spark" -> "The hostest", "Scala" -> "The hoster"))
}
//对值进行匹配
def getSalary(name: String, age: Int) {
name match {
case "Spark" => println("$150000/year")
case "Hadoop" => println("$100000/year")
case _name if age >= 5 => println("name:" + _name + " age:" + age)
case _ if name == "Scala" => println("$140000/year")
case _ if name == "Hadoop MR" => println("$90000/year")
case _ => println("$80000/year")
}
}
//对类型进行匹配
def getMatchType(msg: Any) {
msg match {
case i: Int => println("Integer")
case d: Double => println("Double")
case s: String => println("String")
case _ => println("Unkown type")
}
}
//对集合进行匹配
def getCollect(msg: Array[String]) {
msg match {
case Array("Scala") => println("One element")
case Array("Scala", "Spark") => println("Two element")
case Array("Scala", _*) => println("More element") //以Scala开头的多值匹配
case _ => println("Unkown type")
}
}
//case class模式匹配
def getMatchClass(p: People) {
p match {
case Teacher(name, age) => println(name + ":" + age)
case Worker(name, age) => println(name + ":" + age)
case _ => println("Other Type")
}
}
//Option
def getValue(key: String, content: Map[String, String]) {
content.get(key) match {
case Some(value) => println(value)
case None => println("None")
}
}
}
备注:
资料来源于:DT_大数据梦工厂(Spark"蘑菇云"行动)
更多私密内容,请关注微信公众号:DT_Spark
如果您对大数据Spark感兴趣,可以免费听由王家林老师每天晚上20:00开设的Spark永久免费公开课,地址YY房间号:68917580