Class 什么';这两者之间的区别是什么;“类”;及;“案例类”;在斯卡拉?

Class 什么';这两者之间的区别是什么;“类”;及;“案例类”;在斯卡拉?,class,scala,case-class,Class,Scala,Case Class,我原以为这两个案子会采取同样的行动。但前者失败并出现错误(值x不是A的成员)。为什么只有前者失败?案例类的构造函数参数会自动设置为可访问字段。例如,您的类B将x作为字段,因此B.x是合法的。您的类A不是case类,因此它的x未设置为可访问字段。如果希望非case类具有可访问的构造函数参数,则必须使用val显式标记这些参数: class A(x: Int) def f(a: A): Stream[A] = a #:: f(new A(a.x + 1)) case class B(x: Int)

我原以为这两个案子会采取同样的行动。但前者失败并出现错误(值x不是A的成员)。为什么只有前者失败?

案例类的构造函数参数会自动设置为可访问字段。例如,您的类
B
x
作为字段,因此
B.x
是合法的。您的类
A
不是case类,因此它的
x
未设置为可访问字段。如果希望非case类具有可访问的构造函数参数,则必须使用
val
显式标记这些参数:

class A(x: Int)
def f(a: A): Stream[A] = a #:: f(new A(a.x + 1))

case class B(x: Int)
def f(b: B): Stream[B] = b #:: f(B(b.x + 1))

此问题与
无关。
class A(val x: Int)