Spark之Scala学习之路(四)
来源:互联网 发布:淮北微商自然知彼 编辑:程序博客网 时间:2024/06/11 14:55
模式匹配 match-case
值的匹配:
def bigData(data:String){ data match{ case "Spark" => println("Wow!!!") //左侧函数体右侧执行内容 case "Hadoop" => println("OK!!!") case _ => println("No!!") //不满足上面的情况 }}def bigData(data:String){ data match{ case "Spark" => println("Wow!!!") case "Hadoop" => println("OK!!!") case data_ if (data_=="Scala") => println("Good") //data自动赋值给data_(data)在判断 case data if (data=="Scala") => println("Good") case _ if (data=="Flink")=> println("Cool!!") case _ => println("No!!") //上面对case _进行判断,这里重新补充其他情况 }}
类型匹配:
def exception(e: Exception){ //import java.io._ e match{ case fileException: FileNotFoundException => println("Flie not find:"+fileException) case _: Exception =>println("Exception getting thread dump from executor SexecutorId",e ) }}exception(new FileNotFoundException("Ooosp"))def data(array:Array[String]){ array match{ case Array("Scala") => println("Scala") case Array(spark,hadoop,flink) =>println(spark+":"+hadoop+":"+flink) //只要传入3个元素,就会匹配 case Array("spark",_*) =>println("spark ...") //匹配以某元素开头的 case _ =>println("Unkown") }}
继承
case class Person(name:String)Person("Spark")class Personcase class Worker(name:String,salary:Double) extends Personcase class Student(name:String,score:Double) extends Persondef sayHi(person:Person){ person match{ case Student(name,score) => println(name + score) case Worker(name,salary) => println(name + salary) case _ => println("None") }}sayHi(Worker("Spark",6.5))
case class 生成很多实例
case object 本身就是一种实例
Option
Some //有值
None //无值
isInstanceof //代表是什么类型
内型系统、泛型(内型参数)
泛型类:
class Person[T](val content : T)class Person[T](val content : T) { def getContent(id : T) = id+"_"+content}val p=new Person[String]("Spark")p.getContent("Scala") //上面定义String,所以必须是字符串泛型函数:
<: A A的子类型(上边界)
: B 使用子类型或者子类型的父类
View Bounds(试图界定) <%
implicit def rddToSequenceFileRDDFuntions[K <% Writable:ClassTag,V <% Writable:ClassTag]
Writable:ClassTag
T:ClassTag //T:类型
Manifest Context Bounds //[T:Manifest] Array[T]
类型[T] 在上下文中注入隐式值,而且注入的过程是自动
class Compare[T :Ordering](val n1:T,val n2:T){ def bigger(implicit ordered : Ordering[T])=if (ordered.compare(n1,n2)>0) n1 else n2}new Compare[Int](8,3).biggernew Compare[String]("Spark","Hadoop").bigger
class Person[+T] 协变 //类型本身是父类和子类的关系,继承一致是协变(+),不一致就是逆变(-)
[]可以是任何类型 Seq[Dependency[]]相当于 Seq[Dependency[T]]
0 0
- Spark之Scala学习之路(四)
- Spark之Scala学习之路(一)
- Spark之Scala学习之路(二)
- Spark之Scala学习之路(三)
- Spark之Scala学习之路(五)
- scala学习之:并发编程(四)
- Spark 之Scala
- spark定制之四:完整的start.scala
- Scala学习之路
- spark之RDD(四)
- [scala之四]类
- spark(1)-入门spark之scala sbt wordcount实验
- Scala学习2之spark学习6之scala版本不同的问题
- spark mllib机器学习之四 kmeans
- Spark学习之四-键值对操作
- Scala + Spark +Maven之Helloworld
- 9-spark之Scala语言
- Spark机器学习库之数据类型——scala版本
- Wish:超牛的wish采集工具,挖掘wish热门标签,打造wish爆款软件
- zzu数学 实验十一最速降线
- 终端分屏软件 tmux简单教程
- 2016 ccpc 合肥 HDU5965 扫雷
- 一个简单的字符驱动程序
- Spark之Scala学习之路(四)
- 最大似然估计 (MLE) 最大后验概率(MAP)
- HDU5965--2016年中国大学生程序设计竞赛(合肥)
- C指针有感
- Java集合源码解析(三)HashMap源码解析
- UVALive - 4287 Proving Equivalences
- LinkedHashMap源码分析与LRU实现
- open系统调用的O_CREAT和O_EXCL
- AndroidUtils——ToastUtils