Scala:编译时自动初始化val

Scala:编译时自动初始化val,scala,Scala,我正在尝试创建一个DSL。对于这个DSL,用户需要能够将结果存储在某个全局值池中(我试图想出其他方法,但到目前为止,我还没有能够替换它)。我想将此“池”创建为包含所有已定义值的对象。我希望它们是不可变的,但值本身是秘密列表,用于跟踪所有指定的值 但是,为了尽可能地满足用户的需求,我希望有如下内容: object Values { val value1 val value2 val value3 } 这当然不会编译。但我不想每次都把它们变成手工作业: object Values { va

我正在尝试创建一个DSL。对于这个DSL,用户需要能够将结果存储在某个全局值池中(我试图想出其他方法,但到目前为止,我还没有能够替换它)。我想将此“池”创建为包含所有已定义值的对象。我希望它们是不可变的,但值本身是秘密列表,用于跟踪所有指定的值

但是,为了尽可能地满足用户的需求,我希望有如下内容:

object Values {
 val value1
 val value2
 val value3
}
这当然不会编译。但我不想每次都把它们变成手工作业:

object Values {
 val value1 = X()
 val value2 = X()
 val value3 = X()
}

这似乎是多余的。这个对象中的所有内容都将是X类型。我希望使用第一个版本来完成代码(否则我可以使用Dynamic),但我不确定这是否可行,如果可行,我如何做到这一点。我已经看过了宏,但我还不能完全确定它们是否对我有帮助。

宏在编译时被“评估”。我认为这里需要的是编译时的东西。所以他们在这里帮不了你。你说的“多余”是什么意思?“你只需要按照它们应该的样子初始化它们就行了。”萨维什库马辛:我的意思是多余的,因为它非常冗长。该对象中的每个值都将是相同的类型。那么为什么我要手动初始化所有东西呢?它添加了很多在这种情况下不必要的代码,并使DSL变得不必要的冗长。我不确定我是否理解正确,但您可以通过
val value1,value2,value3=X()
@PH88将所有val初始化为相同的值,我已经记住了,但谢谢!这使它更具可读性,但我仍然需要考虑其他解决方案。