zoukankan      html  css  js  c++  java
  • Scala 隐式转换 重要一点 什么是隐式转换以及隐式转换带来的好处

    Scala 隐式转换 重要一点 什么事隐式转换


    package com.xing.listfile
    
    /**
      * Created by DengNi on 2017/2/12.
      * 简要说明 implicit 是什么 ? 就是从一个类的对象调用另外一个类方法
      */
    //Method 1 OptimusPrime can not call AutoBots 's function BlowFire
    // 增加 OptimusPrime object 对象 实现隐式转换
    class OptimusPrime(val function :String)  //此处 val 是必须的 ,不然找不到 optimusPrime.function
    /**
    object OptimusPrime{
      implicit def optimusPrime2AutoBots(optimusPrime:OptimusPrime) = new AutoBots(optimusPrime.function)
    }
    **/
    class AutoBots(function : String){
      def blowFire = println(function + ": I can blow fire to fire you!!!")
    }
    //Method 2 定义一个不同类名字的 object  对象  ,zai  main 方法里面引用这个 对象
    object implictis {
      implicit def optimusPrime2AutoBots(optimusPrime:OptimusPrime) = new AutoBots(optimusPrime.function)
    }
    
    object HelloImplicit {
    
      def main(args: Array[String]) {
        import implictis._
        val op = new OptimusPrime("OptimusPrime")
        println(op.blowFire)
    
        //多参数
       // talk("p1") 只传一个参数 指定是错的了
        talk("p1")("p22")
    
        // 但是我们就只想传一个 呢??
        implicit val name2 ="eat you"  //此处也引用了 隐式转换
        talk2("p3")
    
    
      }
      // 定义一个函数 有两个参数
      def talk(name1 : String)(name2:String) = println("thera are 2 param")
      def talk2(name1 : String)(implicit name2:String) = println("thera are 2 param " +name2) // 此处 implicit 必须加
    }
    /**
    "C:Program FilesJavajdk1.7.0_80injava" -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:Program Files (x86)JetBrainsIntelliJ IDEA Community Edition 2016.1.3in" -Dfile.encoding=UTF-8 -classpath "C:Program FilesJavajdk1.7.0_80jrelibcharsets.jar;C:Program FilesJavajdk1.7.0_80jrelibdeploy.jar;C:Program FilesJavajdk1.7.0_80jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.7.0_80jrelibextdnsns.jar;C:Program FilesJavajdk1.7.0_80jrelibextjaccess.jar;C:Program FilesJavajdk1.7.0_80jrelibextlocaledata.jar;C:Program FilesJavajdk1.7.0_80jrelibextsunec.jar;C:Program FilesJavajdk1.7.0_80jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.7.0_80jrelibextsunmscapi.jar;C:Program FilesJavajdk1.7.0_80jrelibextzipfs.jar;C:Program FilesJavajdk1.7.0_80jrelibjavaws.jar;C:Program FilesJavajdk1.7.0_80jrelibjce.jar;C:Program FilesJavajdk1.7.0_80jrelibjfr.jar;C:Program FilesJavajdk1.7.0_80jrelibjfxrt.jar;C:Program FilesJavajdk1.7.0_80jrelibjsse.jar;C:Program FilesJavajdk1.7.0_80jrelibmanagement-agent.jar;C:Program FilesJavajdk1.7.0_80jrelibplugin.jar;C:Program FilesJavajdk1.7.0_80jrelib
    esources.jar;C:Program FilesJavajdk1.7.0_80jrelib
    t.jar;D:igdataworkspaceskafSpStoutproductionkafSpSt;F:scalalibscala-actors-migration.jar;F:scalalibscala-actors.jar;F:scalalibscala-library.jar;F:scalalibscala-reflect.jar;F:scalalibscala-swing.jar;D:igdataworkspaceskafSpStlibfastjson-1.2.11.jar;D:igdataworkspaceskafSpStlibfastutil-7.0.11.jar;D:igdataworkspaceskafSpStlibkafka_2.10-0.8.2.1.jar;D:igdataworkspaceskafSpStlibmysql-connector-java-5.1.6.jar;D:igdataworkspaceskafSpStlibmysql-connector-java-5.1.8-bin.jar;D:igdataworkspaceskafSpStlibspark-assembly-1.6.0-hadoop2.6.0.jar;D:igdataworkspaceskafSpStlibspark-examples-1.6.0-hadoop2.6.0.jar;C:Program Files (x86)JetBrainsIntelliJ IDEA Community Edition 2016.1.3libidea_rt.jar" com.intellij.rt.execution.application.AppMain com.xing.listfile.HelloImplicit
    OptimusPrime: I can blow fire to fire you!!!
    ()
    thera are 2 param
    thera are 2 param eat you
    
    Process finished with exit code 0
     **/


  • 相关阅读:
    Nginx应用详解及配置
    mongodb复制+分片集原理
    memcached架构及缓存策略
    redis数据类型
    redis数据库安装 redis持久化及主从复制
    shell脚本-正则、grep、sed、awk
    kvm虚拟机管理基础
    kvm热添加和热迁移
    zabbix调用api检索方法
    kubernetes deployment升级和回滚
  • 原文地址:https://www.cnblogs.com/TendToBigData/p/10501284.html
Copyright © 2011-2022 走看看