我是scala的新手,在尝试学习区分大小写语法时,我想到了这段代码,第一个代码是我对错误的处理方式,第二个代码是我如何解决此错误的方式。 有人知道为什么我需要在班级添加成员“名称”吗?
List
上面的代码给我错误:“值名称不是A的成员” 现在,如果我将A类更改为此:
ToList
输出将是“你的名字叫约翰”(这是我所期望的)
P.S:如果我将A类改为案例类,问题就解决了,为什么?
答案 0 :(得分:0)
class A (name: String) extends T
不带有val
或var
的参数属于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