我何时需要在Scala中将成员定义添加到我的班级?

时间:2019-04-20 00:16:08

标签: scala syntax

我是scala的新手,在尝试学习区分大小写语法时,我想到了这段代码,第一个代码是我对错误的处理方式,第二个代码是我如何解决此错误的方式。 有人知道为什么我需要在班级添加成员“名称”吗?

List

上面的代码给我错误:“值名称不是A的成员” 现在,如果我将A类更改为此:

ToList

输出将是“你的名字叫约翰”(这是我所期望的)

P.S:如果我将A类改为案例类,问题就解决了,为什么?

1 个答案:

答案 0 :(得分:0)

class A (name: String) extends T

不带有valvar的参数属于private [this]类型,并且仅在类中可见

如果将其更改为

class A (val name: String) extends T

这使构造函数参数name公开,并且可以使用类对象进行访问,而无需使用吸气剂(如果要更改值,请使用var

,如果是这个

case class A (name: String) extends T

案例类参数默认情况下是公用的val,因此这就是您说的那样的原因

参考- https://docs.scala-lang.org/tour/classes.html
https://docs.scala-lang.org/tour/case-classes.html