• Scala隐式转换


    1.隐式值

    object ScalaDemo {
    
      implicit val str : String = "刘明"
    
      def main(args: Array[String]): Unit = {
        //匹配隐式值时,不加括号
        show
      }
    
      def show(implicit name:String)={
        print("name: " + name)
      }
      
    }
    

    2.隐式方法

    object ScalaDemo {
    
      def main(args: Array[String]): Unit = {
        val aa = new AA
        aa.methodAA()
        //创建了AA,经隐式方法转换,能调用BB里的方法
        aa.methodBB()
      }
    
      implicit def AB(a:AA):BB={
        new BB
      }
      
    }
    
    class AA {
      def methodAA(): Unit ={
        println("methodAA...")
      }
    }
    
    class BB {
      def methodBB(): Unit ={
        println("methodBB...")
      }
    }
    

      

    3.隐式类

    object ScalaDemo {
      
      def main(args: Array[String]): Unit = {
        val aa = new AA
        aa.methodAA()
        //创建了AA,经隐式类的主构造器转换,能调用BB里的所有方法
        aa.methodBB()
        aa.methodBB2()
      }
    
      implicit class BB(aa: AA) {
    
        def methodBB(): Unit ={
          println("methodBB...")
        }
        
        def methodBB2(): Unit ={
          println("methodBB2...")
        }
      }
    
    }
    
    class AA {
      def methodAA(): Unit ={
        println("methodAA...")
      }
    }
    

      

      下面的代码标明了类的泛型为java中的Float,而在scala代码中直接写10.5f类型为scala的Float。scala与java存在大量的交互使用,通过隐式转换,省去简单又繁琐的编码。

    val compare2 = new CommonCompare[java.lang.Float](10.5f, 20.5f)
    

      

  • 相关阅读:
    BZOJ 1565 植物大战僵尸
    BZOJ 1497 最大获利(最大权闭合子图)
    BZOJ 1070 修车(最小费用流)
    BZOJ 2879 NOI2012美食节
    PHPCMS模板里面使用自定义函数
    邓_phpcms_数据库
    邓_ phpcms_
    dedecms====phpcms 区别==[工作]
    邓_html_图片轮播
    dedecms_插件
  • 原文地址:https://www.cnblogs.com/noyouth/p/12703328.html
Copyright © 2020-2023  润新知