zoukankan      html  css  js  c++  java
  • 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)
    

      

  • 相关阅读:
    printf,wprintf与setlocale,char与wchar_t区别
    C++常量表达式、const、constexpr(C++11新增)的区别
    珍珠项链 Beads
    A Horrible Poem
    三个朋友
    Seek the Name, Seek the Fame
    Power Strings
    图书管理
    子串查找
    山峰和山谷 Ridges and Valleys
  • 原文地址:https://www.cnblogs.com/noyouth/p/12703328.html
Copyright © 2011-2022 走看看