scala-隐式转换,actor

spark
2018.11.4
1.scala的隐式转换和隐式参数
    1.1 定义: scala允许手动指定,将某种类型的对象转换成其他类型的对象
        定义隐式转换函数,即implicit conversion function     
        函数命名规则一般建议 "one2one"
    1.2 getClass 获取某个对象属于哪个类
        classOf 检测对象是否是某个类的对象而不是其子类
        isinstanceOf   检查某个对象是否属于某个类  a.isinstanceOf[b]  判断对象a是否属于b类,返回布尔类型
        asinstanceOf   将引用类型转换为子类的引用
    1.3 使用隐式转换加强现有类型(例子:超人变身)
    1.4 隐式转换的作用域(仅仅在需要隐式转换的地方,比如某个函数或方法内,用import导入隐式转换函数)与使用时机
        ①调用某个函数,但是给函数传入的参数类型与函数定义的接受收参数的类型不匹配(例子:特殊售票窗口)
          implicit def object2SpecialPerson(obj:Object):SpecialPerson = {}
        ②使用某一个类型的对象,调用某个方法,而这个方法并不存在与该类型时(例子:超人变身)
        ③使用某一个类型的对象,调用某一个方法,虽然该类型有这个方法,但是给方法传入的参数类型,与方法定义的接受参数的类型不匹配
        (例子:特殊售票窗口加强版)
    1.5 隐式参数:在函数或方法中,定义一个用implicit修饰的参数,此时scala会尝试找到一个指定类型,用implicit修饰的对象,并注入参数
        例子:考试签到
        class SignPen{def write(content:String)=println(content)}
        implicit val signPen = new SignPen
        def signForExam(name: String)(implicit signPen: SignPen){signPen.write(name+"come to exam in time")}
2.Actor与Akka
    2.1 并发编程
        actor:一个容器,一个封装了状态和行为的对象,每个actor都通过message交流,从自己的mailbox中读取别的actor发送的消息
        Akka
    2.2 case class :最重要的特点支持模式匹配  
        /** 
         * case class 示例 
         */ 
        abstract class Person  
        case class Student(name:String,sno:Int) extends Person  
        case class Teacher(name:String,tno:Int) extends Person  
        case class None(name:String) extends Person  
           
        object CaseClassTest extends App {  
            def caseClassMatch(p:Person) = p match{  
              case Student(name,sno) => println(name + " is a student,sno is:" + sno)  
              case Teacher(name,tno) => println(name + " is a teacher,tno is:" + tno)  
              case None(name) => println("None matched")  
            }  
               
            val p = Student("yy",20151214)  
            caseClassMatch(p)  
        }
    2.3 actor的工作模式
        actor就是对象发送与接收消息的过程,消息可以是任何类型但必须是不可变的(eg:String,Int,Boolean,case class,tuple,list,map)
    2.4 发送消息
        ① ! 表示异步发送一个消息并立即返回,也称"tell"
        ② ?表示异步发送一个消息并返回一个future-代表一个可能的回应,也称"ask"
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        

猜你喜欢

转载自blog.csdn.net/qq_33068519/article/details/83717126