问题标签 [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.

0 投票
4 回答
7153 浏览

scala - 如何在 Scala 的主构造函数中定义本地 var/val?

在 Scala 中,类的主构造函数没有显式的主体,而是从类主体中隐式定义的。那么,如何区分字段和本地值(即构造函数方法的本地值)?

例如,采用以下代码片段,它是“Scala 编程”中一些示例代码的修改形式:

我的理解是,这将生成一个具有三个字段的类:私有“g”和公共“x”和“y”。但是,g 值仅用于计算 x 和 y 字段,超出构造函数范围没有任何意义。

所以在这个(当然是人为的)例子中,你如何为这个构造函数定义局部值?

0 投票
1 回答
365 浏览

scala - 抽象 val 而不是主构造函数参数

考虑这两个类以及创建实例的方式:

和:

为什么更喜欢后一个 ( Person2) 版本?每个这样的声明都会导致创建新的子类,代码也稍微冗长且可读性较差,但是第二个习惯用法在《Scala 编程》一书中多次使用。与直接领域相比有什么优势?

0 投票
2 回答
34488 浏览

scala - scala构造函数参数是否默认为私有val?

我已经试了:

与:

尽管我找不到任何可以(bar: Int)扩展的地方,但它们的行为似乎相同,(private val bar: Int)所以我的问题是,这些相同/相似吗?

附带说明一下,我一直在尝试-Xprint:typer在这些代码片段上使用它们,它们产生相同的代码,除了第二个中的额外行。我如何阅读那条额外的线?

0 投票
5 回答
1139 浏览

scala - 主构造函数内的Scala局部变量

如何在 Scala 中在主构造函数中定义局部变量?

我需要从Scala for the impatient书中解决这个练习:

编写一个 Person 类,其主构造函数接受包含名字、空格和姓氏的字符串,例如 new Person("Fred Smith")。提供只读属性 firstName 和 lastName。主构造函数参数应该是 var、val 还是普通参数?为什么?

现在我的解决方案如下所示:

如何将firstLastAsArr变量可见性限制在主构造函数范围(现在它具有类范围)?

0 投票
1 回答
650 浏览

scala - 主构造函数,带下划线的值

试试这个(在 Scala 2.10.3 中):

有什么问题?默认值类型的下划线不能在主构造函数中使用?