小编Viv*_*966的帖子

Scala中的隐式类

我有以下代码.我必须确认它是如何工作的方式.任何人都可以为此提供解释

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知道吗?

functional-programming scala

2
推荐指数
1
解决办法
631
查看次数

标签 统计

functional-programming ×1

scala ×1