由于未型宏出现,因此避免初始类型检查的宏变体数量已减少。
相关版本中的基本原理DOC参考文献隐式宏和宏注释作为替代方案。
确实,宏观注释确实可以按照广告宣传起作用。但是,我找不到一个隐式宏(至少一个理解的)或在这种情况下部署的其他宏变体的示例。
因此,再次,问题是:除了宏观注释外,哪些宏创建方法避免了立即的类型检查,并且在这方面有何不同?
特定的用例刺激我的调查正在改变这样的事情(用宏观注释实现):
{
@blah
val x = {
foo("a")
bar()
}
}
,在宏应用程序之前,在当前范围中的任何地方未定义foo
和bar
。预期的用例是DSL。上面的示例仅针对上下文,因此请不要将您的答案限制在此情况下。
目前(scala 2.11.0-m8,宏天堂2.0.0-m3),在宏pardise中实现的宏观注释是唯一一个唯一不打算打字宏观参数的宏观风味扩展。
还有一个实验性的DSL植层建议,可以扩展Scala使用范围注入,这将使DEF宏无法以受控的方式键入DEF宏,但目前处于早期实施阶段,因此目前尚不可用。<<<<<<<<<<<<<<<<<<<<<<<<
目前尚不清楚官方Scala官方宏的未来宏的未来。一方面,我们认识到非型宏有时很有用(例如,对于类型提供者,范围注入),但是,另一方面,它看起来像是他们最一般的形式,这样的宏比我们想要的更强大要成为(请参阅我关于Scala Macros哲学的奇异谈话,从27:40开始,以及Scala-Internals的最新讨论)。因此,需要进行未来的实验才能详细说明宏应进入躯干的确切形状。