2

采取一个简单的类,如下所示:

class Person(name: String, age: Int) {}

现在,当我实例化这个类时,我通常希望它的用户能够使用nameage. 喜欢:

val ronald = new Person("Ronald", 22)
val ronaldsName = ronald.name  // <-

这当然行不通,除非我定义一个getter calledname或创建Person一个case class。后者是一个简单的解决方案,但我觉得我在滥用案例类?

前者还是有点不方便,因为我不能简单地:

class Person(name: String, age: Int) {
  def name = name
}

因此,我必须将name类构造函数中的第一个重命名为其他名称,例如personNameor_namen。但这在我看来有点令人困惑,而且远没有那么优雅。它是相同的概念/变量/值,所以它应该具有完全相同的名称,对吧?

那么......这里最好或正确的做法是什么?只是添加它是如此case诱人。

4

1 回答 1

9

您只需添加val即可将参数转换为类的公共字段:

class Person(val name: String, val age: Int)
             ^^^               ^^^

正如您所注意到的,案例类默认执行此操作。

于 2012-12-04T09:48:44.703 回答