如何成为Id类型?

时间:2018-03-04 20:04:53

标签: 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]的类型,但我刚刚Intmap,为什么有可能?

2 个答案:

答案 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