2016-04-30 73 views
1

我目前正在嘗試理解Scala中宏的概念。宏在定義它們的編譯單元中不能使用。在一個Scala項目中可以有單獨的編譯單元嗎?

爲了解決這個問題,我做了@adamwthis例子,即我用sbt創建了一個包含兩個子項目的項目 - 一個包含宏,另一個包含使用宏的例子。

但是,雖然這個工作,我覺得它不是一個乾淨的方法。畢竟,宏不應該是邏輯上屬於他們的項目的一部分嗎?因此,在一個sbt項目中設置單獨的編譯單元時,是否可以將宏的定義以及使用它們的代碼放在同一個項目中?

非常感謝您提前!

回答

2

已經討論過使用Macro配置範圍來添加額外的macro:compile任務。

這將允許您將宏源放入src/macro/scala並使macro:compile依賴於compile

使用這樣的配置範圍,可以在同一個項目中使用宏和常規源。但是,這不是sbt中的默認設置,而是您必須添加的東西。我忘記了所需的確切咒語。

相關問題