我正在尝试创建一个DSL。对于这个DSL,用户需要能够将结果存储在一些全局值池中(我试图想到别的东西,但到目前为止我还没有能够替换它)。我想将此“池”创建为包含所有已定义值的对象。我希望它们是不可变的,但值本身是秘密列表,可以跟踪所有指定的值。
但是,为了尽可能地容纳用户,我想要有如下内容:
object Values {
val value1
val value2
val value3
}
这当然不会编译。但我不想每次都进行手动分配:
object Values {
val value1 = X()
val value2 = X()
val value3 = X()
}
这似乎相当多余。无论如何,此对象中的所有内容都将是X类型。我想要第一个版本用于代码完成目的(否则我可以使用Dynamic),但我不确定这是否可能,如果是这样,我怎么能这样做。我看过宏观,但我还不完全确定这些是否可以帮助我。