MyT*_*tle 3 scala scala-primary-constructor
如何在Scala中我可以在主构造函数中定义局部变量?
我需要从Scala for the impatient书中解决这个练习:
编写一个具有主构造函数的Person,该构造函数接受包含第一个名称,空格和姓氏的字符串,例如new Person("Fred Smith").提供只读属性firstName和lastName.主构造函数参数应该是var,val还是plain参数?为什么?
现在我的解决方案看起来像这样:
class Person(firstLast: String) {
private[this] val firstLastAsArr = firstLast.trim.split(" ")
val firstName = firstLastAsArr (0)
val lastName = firstLastAsArr (1)
}
Run Code Online (Sandbox Code Playgroud)
如何限制firstLastAsArr主要构造函数范围的变量可见性(现在它有类范围)?
一种解决方案是初始化firstName并lastName立即进行,从而允许firstLastAsArr在初始化块内转换为本地临时值:
class Person(firstLast: String) {
val (firstName, lastName) = {
val firstLastAsArr = firstLast.trim.split(" ")
(firstLastAsArr(0), firstLastAsArr(1))
}
}
Run Code Online (Sandbox Code Playgroud)