【发布时间】:2014-01-27 00:46:08
【问题描述】:
由于无类型宏是out,因此避免初始类型检查的宏变体数量已经减少。
relevant release doc 中的基本原理引用了隐式宏和宏注释作为替代方案。
确实,宏注释确实像宣传的那样工作。但是,我找不到在这种情况下部署隐式宏(至少我理解的宏)或其他宏变体的示例。
那么,问题又来了:除了宏注解之外,还有哪些宏创建方法可以避免立即进行类型检查,它们在这方面有何不同?
促使我进行调查的具体用例正在改变这样的事情(通过宏注释实现):
{
@blah
val x = {
foo("a")
bar()
}
}
其中foo 和bar 未在宏应用程序之前的当前范围内的任何位置定义。预期的用例是 DSL。 以上示例仅针对上下文给出,因此请不要将您的答案局限于此场景。
【问题讨论】:
-
隐式宏可以提供类型宏的类型级计算方面的替代方案,但据了解,它们不能以无类型方式使用。
标签: scala scala-macros scala-macro-paradise