斯卡拉琅参考5.5.1和6.6.1给我的印象是一个默认的参数就可以参考先前估计的一个:Scala应该如何默认参数来引用先前的位置参数?
class Test(val first: String, val second: String = first)
但试验似乎做到这一点的唯一方法是使用以下形式:
class Test(val first: String)(val second: String = first)
然后定义一个辅助构造函数或造物伴侣类以避免创建时指定第二组括号。我真的不明白第二个构造函数是如何工作的,它看起来像一个curry函数,所以我可能猜测有必要独立于second
来评估first
,这是正确的吗?这种形式是必要的还是有一些合成糖我可以用来调整第一个构造函数做我想做的事?
[当前斯卡拉语言规范](http://www.scala-lang.org/sites/default/files/linuxsoft_archives/docu/files/ScalaReference.pdf)中没有(子)部分5.5.1, 。你的意思是5.1.1(“构造函数调用”)? – Philippe
是的应该是5.1.1。正如@Travis Brown指出的那样,5.3节中定义参数的范围可以解释编译错误。 – MilesHampson