第15课:scala类型参数编程实战及spark源码鉴赏

第15课:scala类型参数编程实战及spark源码鉴赏
1 spark源码中的scala类型系统
2 scala类型系统编程操作实战

 

 

第15课:scala类型参数编程实战及spark源码鉴赏_第1张图片

 

第15课:scala类型参数编程实战及spark源码鉴赏_第2张图片

 

 

 

第15课:scala类型参数编程实战及spark源码鉴赏_第3张图片

 

 

第15课:scala类型参数编程实战及spark源码鉴赏_第4张图片

 

第15课:scala类型参数编程实战及spark源码鉴赏_第5张图片

 

 

第15课:scala类型参数编程实战及spark源码鉴赏_第6张图片

第15课:scala类型参数编程实战及spark源码鉴赏_第7张图片

 

第15课:scala类型参数编程实战及spark源码鉴赏_第8张图片

 

 

 

 

第15课:scala类型参数编程实战及spark源码鉴赏_第9张图片

 

 


 

package com.dt.spark.scala.bascis

class Engineer
class Expert extends Engineer


class Meeting [-T] 
// class Meeting [+T] 

class Animal[T](val species:T){
  def getAnimal(species:T) = species 
}

class Maximum[T:Ordering](val x:T,val y: T){
  def bigger(implicit ord:Ordering[T]) ={
    if (ord.compare(x, y) >0 ) x else y
  }
}



object HelloScalaTypeSystem {
 def main(args: Array[String]): Unit = {
   val p=new Person("scala")
  
   val w=new Worker("java")
       new Club(p,w).comunicate
       val dog=new Dog("dahuang")
       new Club(dog,dog).comunicate
       new Club[Person](p,dog).comunicate
    /////////////////
       println("===============")
   val e= new Meeting[Engineer]
   participateMeeting(e)
   val expert =new Meeting[Expert]
   participateMeeting(expert)
   
   
   println(new Maximum("scala","java").bigger)
    println(new Maximum("50","70").bigger)
   
 }
 
 //def participateMeeting(meeting:Meeting[Engineer]){
 def participateMeeting(meeting:Meeting[Expert]){
   println("welcome:   " + meeting.toString())
 }
 
class Person(val name:String){
  def talk(person:Person){
    println(this.name + "  talk to :  " + person.name)
  }
}

class Worker(name:String) extends Person(name)

class Dog( val name:String)

implicit def dog2Person(dog:Dog) = new Person(dog.name)

 class Club[T <% Person](p1:T , p2:T){
  def comunicate = p1.talk(p2)
} 

/*class Club[T <: Person](p1:T , p2:T){
  def comunicate = p1.talk(p2)
}*/



}






scala  talk to :  java
dahuang  talk to :  dahuang
scala  talk to :  dahuang
===============
welcome:   com.dt.spark.scala.bascis.Meeting@a298b7
welcome:   com.dt.spark.scala.bascis.Meeting@14991ad
scala
70

 

 

 

 

 

 

你可能感兴趣的:(大数据蘑菇云行动)