美文网首页
scala的隐式

scala的隐式

作者: high_m | 来源:发表于2017-10-31 20:20 被阅读0次

    scala的隐式可以让操作变得更加简洁,文末的参考中列出的implicit的相关博文很好的表达了隐式的作用及使用方式,这里主要分析几个案例。


    1 浅看Map

    final class MyTuple2[A](private val self: A) {
         def & [B](y: B): (A, B) = Tuple2(self, y)
         def map [B](y: B): (A, B) = Tuple2(self, y)
    }
    
    object myTrait {
      implicit def any2MyTuple2[A](x: A): MyTuple2[A] = new MyTuple2(x)
    }
    
    object MapUseDriver extends App {
      import myTrait._
      val a = Map(1 & "A",2  & "B")
      println(a)
    
      val c = Map(1.&("A"),2.&("B"))
      println(c)
    
      val b = Map(1 map "A", 2 map "C")
      println(b)
    
      val myMap = new MyTuple2[Int](1)
      println(myMap.map(2))
    }
    

    文中 1 & A为什么是有效的?

    因为隐式方法 any2MyTuple2的作用,使得在该作用域下的任意类型对象都有转化为MyTuple2类型的能力,也即都可以拥有MyTuple2的方法

    更多的可以查找Predef.scala中的ArrowAssoc类以及隐式方法any2ArrowAssoc

    参考

    相关文章

      网友评论

          本文标题:scala的隐式

          本文链接:https://www.haomeiwen.com/subject/arkipxtx.html