在 Scala 中使用 DSL,所以可以说我有这样的东西:
house {
floor {
bedroom("kids)
bedroom("master")
}
floor {
kitchen()
}
}
现在我想要的是在每个嵌套块上都有一个引用或引用封闭块上的函数。例如,效果是将地板添加到房屋,将卧室添加到地板等。
目前,我以一种可怕的方式执行此操作,即在每个嵌套级别更新一个全局堆栈以跟踪当前的“上下文”。此外,我当前的版本不是类型安全的,因为我可以在房子里添加一间卧室。
之前的另一个修订是
house {
floor {
bedroom("kids) +
bedroom("master")
} +
floor {
kitchen()
}
}
每个块返回一个小部件列表(+ 使用隐式将通用“事物”转换为“事物列表”,以便可以添加下一个“事物”)。一旦块返回,则添加返回的小部件列表。但我不喜欢强制使用 + ,因为它在许多页面上变得丑陋。
无论如何要融合两者?