我有以下代码.我必须确认它是如何工作的方式.任何人都可以为此提供解释
object Implicits
{
implicit class RichSeq[A](val xs:Seq[A])
{
def mapD[B](function:A => B):Seq[B] = xs.map(function)
}
}
Run Code Online (Sandbox Code Playgroud)
这就像地图上的抽象,我可以使用序列.因此,如果我导入此Implicits.RichSeq,我可以使用任何Seq [A]上的方法,因为这会将Seq [A]转换为RichSeq [A].
import Implicits.RichSeq._
val xs:Seq[Int] = Seq(22,33)
val output:Seq[Int] = xs.mapD(_+22)
Run Code Online (Sandbox Code Playgroud)
我想知道它是如何工作的,因为当我在Seq [A]类型上使用mapD时,它将搜索从Seq [A]到RichSeq [A]的隐式转换.它会找到这个隐式转换,因为这是一个隐式类?
它是否将隐式类扩展为:
隐式def RichSeq [A](val xs:Seq [A])= new RichSeq(xs)
我想它可能在里面做这些东西.对此ne1知道吗?