为什么这个 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)
}
这个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)
}