在 GitHub 上編輯此頁面

已移除:Scala 2 巨集

前一個實驗性巨集系統已移除。

取而代之的是一個更乾淨、更受限制的系統,基於兩個互補的概念:inline'{ ... }/${ ... } 程式碼產生。'{ ... } 延遲編譯程式碼並產生包含程式碼的物件,而 ${ ... } 評估產生程式碼的表達式,並將其插入周圍的 ${ ... }。在此設定中,標記為包含 ${ ... } 的內嵌定義是一個巨集,${ ... } 內部的程式碼在編譯時執行,並產生 '{ ... } 形式的程式碼。此外,程式碼的內容可以使用更複雜的反射 API 作為 '{ ... }/${ ... } 架構的延伸來檢查和建立。

  • inline 已在 Scala 3 中實作
  • 引號 '{ ... } 和拼接 ${ ... } 已在 Scala 3 中實作
  • TASTy 反射 提供更複雜的基於樹狀結構的 API 來檢查或建立引號程式碼。