![]() |
1
2
我在电影里看过一个好把戏 XScalaWT 在DSL中实现嵌套。我没有检查规格是否使用相同或不同的东西。
对我来说,这是最能说明问题的部分。之后,您可以相对简单地添加许多其他奇特的特性(如隐式魔术、基于结构类型的dsl方法等)。
在这种情况下,你可能会有
您将传入“context”,并使用返回的子级创建父级。
顺便说一句,我认为XScalaWT中需要这个设置,因为它是用于SWT的,在SWT中,子对象需要对其父控件的引用。如果你不需要它(或者任何来自当前“上下文”的东西),那么一切都会变得简单一些。
这种技巧的一个缺点是,对于要在类上调用的每个方法,必须有一个单独的dsl方法(即使是一个简单的方法)。或者你也可以使用像
这会做的工作,但不是那么好(尤其是如果你必须经常这样做)。
|
![]() |
2
2
代码非常简单。基本上我有一个 mutable builder |