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