美文网首页
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