Tag: scala primary constructor

你如何在Scala的主构造函数中定义一个本地var / val?

在Scala中,一个类的主要构造函数没有明确的主体,但是从类主体隐式定义。 那么,如何区分字段和本地值(即构造函数方法的本地值)呢? 例如,采取下面的代码片段,一个从“Programming in Scala”中的一些示例代码的修改forms: class R(n: Int, d: Int) { private val g = myfunc val x = n / g val y = d / g } 我的理解是这将产生一个有三个领域的类:一个私有的“g”,以及公共的“x”和“y”。 但是,g值只用于计算x和y字段,超出构造函数范围没有意义。 所以在这个(不可否认的)例子中,你如何去为这个构造函数定义本地值呢?

Scala的构造函数参数默认为私有的val?

我已经试了: class Foo(bar: Int) VS: class Foo(private val bar: Int) 他们似乎performance一样,虽然我找不到任何地方说(bar: Int)扩大(private val bar: Int)所以我的问题是,这些相同/相似? 在一个侧面说明中,我一直试图在这些代码片段上使用-Xprint:typer并且除了第二个代码块外,它们会产生相同的代码。 我如何阅读额外的行? .. class Foo extends scala.AnyRef { <paramaccessor> private[this] val bar: Int = _; def <init>(bar: Int): this.Foo = { Foo.super.<init>(); () } } .. .. class Foo extends scala.AnyRef { <paramaccessor> private[this] val bar: Int = _; <stable> […]