我有以下代码:
import cats._
import cats.Functor
object StudyIt {
def main(args: Array[String]): Unit = {
val one: Int = 1
val a = Functor[Id].map(one)(_ + 1)
println(a)
}
}
正如你所看到的,map
期待Id[Int]
的类型,但我刚过Int
到map
,为什么它可能?
那是因为Id
只是一个类型别名,它在运行时完全内联。它看起来像这样:
type Id[A] = A
所以在本质上Id[Int]
和Int
是完全相同的类型。
那是因为Id[A]
是literally defined as just A
type Id[A] = A
所以Id[Int]
只是Int
的别名。
这是它的第一个定义之一(第34行):Github link。