问题标签 [scala-primary-constructor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 如何在 Scala 的主构造函数中定义本地 var/val?
在 Scala 中,类的主构造函数没有显式的主体,而是从类主体中隐式定义的。那么,如何区分字段和本地值(即构造函数方法的本地值)?
例如,采用以下代码片段,它是“Scala 编程”中一些示例代码的修改形式:
我的理解是,这将生成一个具有三个字段的类:私有“g”和公共“x”和“y”。但是,g 值仅用于计算 x 和 y 字段,超出构造函数范围没有任何意义。
所以在这个(当然是人为的)例子中,你如何为这个构造函数定义局部值?
scala - 抽象 val 而不是主构造函数参数
考虑这两个类以及创建实例的方式:
和:
为什么更喜欢后一个 ( Person2
) 版本?每个这样的声明都会导致创建新的子类,代码也稍微冗长且可读性较差,但是第二个习惯用法在《Scala 编程》一书中多次使用。与直接领域相比有什么优势?
scala - scala构造函数参数是否默认为私有val?
我已经试了:
与:
尽管我找不到任何可以(bar:
Int)
扩展的地方,但它们的行为似乎相同,(private val bar: Int)
所以我的问题是,这些相同/相似吗?
附带说明一下,我一直在尝试-Xprint:typer
在这些代码片段上使用它们,它们产生相同的代码,除了第二个中的额外行。我如何阅读那条额外的线?
scala - 主构造函数内的Scala局部变量
如何在 Scala 中在主构造函数中定义局部变量?
我需要从Scala for the impatient
书中解决这个练习:
编写一个 Person 类,其主构造函数接受包含名字、空格和姓氏的字符串,例如 new Person("Fred Smith")。提供只读属性 firstName 和 lastName。主构造函数参数应该是 var、val 还是普通参数?为什么?
现在我的解决方案如下所示:
如何将firstLastAsArr
变量可见性限制在主构造函数范围(现在它具有类范围)?
scala - 主构造函数,带下划线的值
试试这个(在 Scala 2.10.3 中):
有什么问题?默认值类型的下划线不能在主构造函数中使用?