在《Programming in Scala 5th Edition》一书中,在第四章中提到,如果一个类是一个案例类,我们可以使用以下方式创建类的对象:
scala> case class Person(name: String, age: Int)
// defined case class Person
scala> val p = Person("Sally", 39)
val p: Person = Person(Sally,39)
我发现它与以下正常方式没有什么不同:
scala> class Person(name: String, age: Int)
// defined class Person
scala> val p = Person("Aviral", 24)
val p: Person = Person@7f5fcfe9
我尝试在这两种情况下访问对象并且存在差异。当我声明与类相同的case
类时,我可以访问其成员:p.name
,p.age
而如果我尝试对通常声明的类执行相同操作,则会收到以下错误:
1 |p.name
|^^^^^^
|value name cannot be accessed as a member of (p : Person) from module class rs$line$3$.
就构造对象而言,这两种情况有何不同?