【发布时间】:2015-01-16 19:04:23
【问题描述】:
我有以下一段代码。我必须确认它是否是如何工作的。任何人都可以提供解释
object Implicits
{
implicit class RichSeq[A](val xs:Seq[A])
{
def mapD[B](function:A => B):Seq[B] = xs.map(function)
}
}
这有点像我可以与序列一起使用的映射抽象。 因此,如果我导入这个 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)
我想知道这是如何工作的,因为当我在 Seq[A] 类型上使用 mapD 时,它会搜索从 Seq[A] 到 RichSeq[A] 的隐式转换。它在哪里找到这个隐式转换,因为这是隐式类?
它是否将隐式类扩展为:
隐式 def RichSeq[A](val xs:Seq[A]) = new RichSeq(xs)
我认为它可能在里面做这些事情。ne1 知道吗?
【问题讨论】:
标签: scala functional-programming