scala的隱式可以讓操作變得更加簡(jiǎn)潔俏讹,文末的參考中列出的implicit
的相關(guān)博文很好的表達(dá)了隱式的作用及使用方式秸弛,這里主要分析幾個(gè)案例裁厅。
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
為什么是有效的柔昼?
因?yàn)殡[式方法 any2MyTuple2
的作用馍乙,使得在該作用域下的任意類型對(duì)象都有轉(zhuǎn)化為MyTuple2
類型的能力布近,也即都可以擁有MyTuple2
的方法。
更多的可以查找Predef.scala
中的ArrowAssoc
類以及隱式方法any2ArrowAssoc
丝格。