Scala-lang 参考 5.5.1 和 6.6.1 给我的印象是默认参数可以引用之前评估过的参数:
class Test(val first: String, val second: String = first)
但从实验看来,这样做的唯一方法是使用以下形式:
class Test(val first: String)(val second: String = first)
然后定义一个辅助构造函数或创建伴生类,以避免在创建时指定第二组括号。我真的不明白第二个构造函数是如何工作的,它看起来像一个柯里化函数,所以我可能猜想有必要first
独立于 评估second
,这是正确的吗?这种形式是必要的还是有一些语法糖我可以用来调整第一个构造函数来做我想做的事?