Scala 它是如何变成Id类型的?

Scala 它是如何变成Id类型的?,scala,scala-cats,Scala,Scala Cats,我有以下代码: 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只是一个类型别名,在运行

我有以下代码:

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]

因此,
Id[Int]
只是
Int
的别名


以下是它,作为第一个定义之一(第34行):.

运行时完全内联的
是什么意思?这意味着只要有
Id[A]
它就会将它变成
A
type Id[A] = A