我目前正在尝试掌握Scala中宏的概念。宏不能在定义它们的编译单元中使用。
要解决这个问题,我在@adamw示例中就像this那样做了,即我使用sbt来创建一个包含两个子项目的项目 - 一个包含宏,另一个包含使用宏的示例。
然而,虽然这有效,但我觉得这不是一个干净的方法。毕竟,不应该将宏作为逻辑上属于他们所属项目的一部分吗?因此,是否可以使用宏?定义以及使用它们的代码位于同一个项目中,同时在一个sbt项目中设置单独的编译单元?
非常感谢你!
答案 0 :(得分:2)
已经讨论过使用Macro
配置范围来添加额外的macro:compile
任务。
这样您就可以将宏来源放入src/macro/scala
,并使macro:compile
成为compile
的依赖关系。
使用这样的配置范围,您可以在同一个项目中拥有宏和常规源。但是,这不是sbt中的默认设置,而是您必须自己添加的内容。我忘记了所需的确切咒语。