如何成为Id类型?

问题描述 投票:0回答:2

我有以下代码:

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,为什么它可能?

scala scala-cats
2个回答
5
投票

那是因为Id只是一个类型别名,它在运行时完全内联。它看起来像这样:

type Id[A] = A

所以在本质上Id[Int]Int是完全相同的类型。


2
投票

那是因为Id[A]literally defined as just A

type Id[A] = A

所以Id[Int]只是Int的别名。

这是它的第一个定义之一(第34行):Github link

© www.soinside.com 2019 - 2024. All rights reserved.