大数据系列修炼-Scala课程31
2016-09-17 10:35
260 查看
大数据系列修炼-Scala课程31
核心内容:
1、Option使用内部实战
2、Option中的sealed关键字解析
1>在Option中有两个具体实现的子类:
cass class Some:若在Option当中含有具体的数值,用Some来表示,
case object None:若Option当中没有相应的数值,就用None来表示.
实例程序:
运行结果:
1>如果在定义Option(Persion)的时候使用sealed关键字,那么Option下面定义的所有case class和case object都必须在
同一个文件中,即同一个包中,这样做的好处是在用Option的具体子类case class和case object在进行模式匹配的时候,编译器
会帮我们检查所有的匹配项是否都已经在case列表中,不然的话将报出相应的警告.
实例程序:
在上面的程序中,因为使用了sealed关键字,&1处将报出警告:match may not be exhaustive.
如有问题,欢迎留言指正!
核心内容:
1、Option使用内部实战
2、Option中的sealed关键字解析
1、Option使用内部实战 |
cass class Some:若在Option当中含有具体的数值,用Some来表示,
case object None:若Option当中没有相应的数值,就用None来表示.
实例程序:
object App8 { def main(args:Array[String]):Unit= { val map = Map("zhang"->88.8,"lisi"->98.8) map.foreach(println) for(ele<-map) println(ele) println("----------------------") //获取信息中的键值 for((key,_)<-map) println(key) //获取信息中的value值 println("----------------------") for((_,value)<-map) println(value) //获取具体的信息值 println(map.get("zhang")) println(map.get("li")) //进行具体的模式匹配 println("----------------------") map.get("zhang") match { case Some(value) => println("value is :" + value) case None => println("nothing") } //在函数中的具体应用 println("----------------------") def fun(infor:Any) = infor match //scala中的Any是一切类型的父类 { case Some(value) => println("value is :" + value) case None => println("nothing") } fun(map.get("zhang")) fun(map.get("li")) } }
运行结果:
(zhang,88.8) (lisi,98.8) (zhang,88.8) (lisi,98.8) ---------------------- zhang lisi ---------------------- 88.8 98.8 Some(88.8) None ---------------------- value is :88.8 ---------------------- value is :88.8 nothing
2、Option中sealed关键字的含义 |
同一个文件中,即同一个包中,这样做的好处是在用Option的具体子类case class和case object在进行模式匹配的时候,编译器
会帮我们检查所有的匹配项是否都已经在case列表中,不然的话将报出相应的警告.
实例程序:
sealed abstract class Persion {} case class Student(age:Int) extends Persion case class Worker(age:Int,salary:Double,item:Persion*) extends Persion object App { def main(args:Array[String]):Unit= { //模式匹配在具体函数中的应用 def fun(persion:Persion) = persion match //&1 { case Student(age) => println("age:"+"\t"+age) //没有列出case Worker //case Worker(_,_,student @ Student(age),_*) => println("age:"+"\t"+student.age) } //测试模式匹配的具体应用 fun(Student(15)) fun(Worker(15,200.0,Student(20))) } }
在上面的程序中,因为使用了sealed关键字,&1处将报出警告:match may not be exhaustive.
如有问题,欢迎留言指正!
相关文章推荐
- 大数据系列修炼-Scala课程35
- 大数据系列修炼-Scala课程48
- 大数据系列修炼-Scala课程63
- 大数据系列修炼-Scala课程09
- 大数据系列修炼-Scala课程42
- 大数据系列修炼-Scala课程16(1)
- 大数据系列修炼-Scala课程03
- 大数据系列修炼-Scala课程71
- 大数据系列修炼-Scala课程19
- 大数据系列修炼-Scala课程24(1)
- 大数据系列修炼-Scala课程58
- 大数据系列修炼-Scala课程11
- 大数据系列修炼-Scala课程64
- 大数据系列修炼-Scala课程02
- 大数据系列修炼-Scala课程08
- 大数据系列修炼-Scala课程21
- 大数据系列修炼-Scala课程49
- 大数据系列修炼-Scala课程68
- 大数据系列修炼-Scala课程52
- 大数据系列修炼-Scala课程67