为什么这个 class 必须是大小写 class?

Why this class have to be case class?

这个class:

class Id[A](value: A) {
 def map[B](f: A => B): Id[B] = Id(f(value))
 def flatMap[B](f: A => Id[B]): Id[B] = f(value)
}

第 2 行出现错误:“未找到值 ID”

如果 class 是个案就好了 class:

case class Id[A](value: A) {

我不知道为什么 class 必须是大小写 class,谢谢!

它本身不需要是 case class。它只需要在其伴随对象上有一个相应的 apply 来创建一个新实例(case 类 会自动为你做)。

如果您出于某种原因真的不希望它成为 case class,您可以像这样自己定义随播广告 apply

class Id[A](value: A) {
 def map[B](f: A => B): Id[B] = Id(f(value))
 def flatMap[B](f: A => Id[B]): Id[B] = f(value)
}
object Id {
  def apply[A](value: A) = new Id(value)
}

或者,正如其他人指出的那样,您可以使用 new 关键字显式实例化 Id

class Id[A](value: A) {
 def map[B](f: A => B): Id[B] = new Id(f(value))
 def flatMap[B](f: A => Id[B]): Id[B] = f(value)
}