package cn.lx
import scala.util.Random
//匹配字符串
object CaseDemo {
val arr = Array("a", "b", "c")
val name = arr(Random.nextInt(arr.length))
name match {
case "a" => println("a...")
case "b" => println("b...")
case _ => println("c...")
}
}
case class SubmitTask(id: String, name: String)
case class HeartBeat(time: Long)
case object CheckTime
//case匹配类型
object CaseDemo2 {
val arr = Array(CheckTime, HeartBeat(12333), SubmitTask("0001", "task-0001"))
arr(Random.nextInt(arr.length)) match {
case SubmitTask(id, name) => {
println(s"$id, $name")//前面需要加上s, $id直接取id的值
}
case HeartBeat(time) => {
println(time)
}
case CheckTime => {
println("check")
}
}
}
//option类型
object OptionDemo3 {
def main(args: Array[String]) {
val map = Map("a" -> 1, "b" -> 2)
val v = map.get("b") match {
case Some(i) => i
case None => 0
}
println(v)
//更好的方式
val v1 = map.getOrElse("c", 0)
println(v1)
}
}
//偏函数
object PartialFuncDemo {
def func1: PartialFunction[String, Int] = {
case "one" => 1
case "two" => 2
case _ => -1
}
def main(args: Array[String]) {
println(func1("one"))
}
}