由于无类型宏已经淘汰,避免初始类型检查的宏变体的数量已经减少。
相关发布文档中的基本原理引用了隐式宏和宏注释作为替代方案。
确实,宏注释似乎确实像宣传的那样工作。但是,我找不到在这种情况下部署隐式宏(至少我理解的)或另一个宏变体的示例。
那么,问题又来了:除了宏注解之外,还有哪些宏创建方法避免了立即类型检查,它们在这方面有何不同?
激发我调查的具体用例正在改变这样的东西(通过宏注释实现):
{
@blah
val x = {
foo("a")
bar()
}
}
wherefoo
和bar
没有在宏应用之前的当前范围内的任何地方定义。预期的用例是 DSL。上面的示例仅针对 context 给出,因此请不要将您的答案限制在这种情况下。