大数据系列修炼-Scala课程31
来源:互联网 发布:淘宝首页模板制作 编辑:程序博客网 时间:2024/05/17 06:57
大数据系列修炼-Scala课程31
核心内容:
1、Option使用内部实战
2、Option中的sealed关键字解析
1、Option使用内部实战
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)----------------------zhanglisi----------------------88.898.8Some(88.8)None----------------------value is :88.8----------------------value is :88.8nothing
2、Option中sealed关键字的含义1>如果在定义Option(Persion)的时候使用sealed关键字,那么Option下面定义的所有case class和case object都必须在
同一个文件中,即同一个包中,这样做的好处是在用Option的具体子类case class和case object在进行模式匹配的时候,编译器
会帮我们检查所有的匹配项是否都已经在case列表中,不然的话将报出相应的警告.
实例程序:
sealed abstract class Persion {}case class Student(age:Int) extends Persioncase class Worker(age:Int,salary:Double,item:Persion*) extends Persionobject 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.
如有问题,欢迎留言指正!
1 0
- 大数据系列修炼-Scala课程31
- 大数据系列修炼-Scala课程01
- 大数据系列修炼-Scala课程02
- 大数据系列修炼-Scala课程03
- 大数据系列修炼-Scala课程04
- 大数据系列修炼-Scala课程05
- 大数据系列修炼-Scala课程06
- 大数据系列修炼-Scala课程07
- 大数据系列修炼-Scala课程08
- 大数据系列修炼-Scala课程09
- 大数据系列修炼-Scala课程10
- 大数据系列修炼-Scala课程11
- 大数据系列修炼-Scala课程12
- 大数据系列修炼-Scala课程15
- 大数据系列修炼-Scala课程17
- 大数据系列修炼-Scala课程18
- 大数据系列修炼-Scala课程19
- 大数据系列修炼-Scala课程20
- 坚持#第40天~克服困难
- leetCode练习(16)
- imageloader用法
- [LeetCode]27. Remove Element【&26. Remove Duplicates from Sorted Array】
- windows环境下ruby的安装
- 大数据系列修炼-Scala课程31
- bzoj 1925: [Sdoi2010]地精部落(dp)
- Android逆向破解之Mointor查看目标日志
- Android中的Shape使用总结
- 大数据系列修炼-Scala课程32
- Android调用系统相机拍照像素太低以及内存溢出问题
- 文件过滤器
- Strom中IBasicBolt与IRichBolt的区别
- POJ1004