我有以下代码:
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
,为什么有可能?
答案 0 :(得分:5)
那是因为Id
只是一个类型别名,它在运行时完全内联。它看起来像这样:
type Id[A] = A
因此,Id[Int]
和Int
本质上是完全相同的类型。
答案 1 :(得分:2)
那是因为Id[A]
是literally defined as just A
type Id[A] = A
因此Id[Int]
只是Int
的别名。
以下是第一个定义之一(第34行):Github link。