1

我可以使用dotty宏分段来解析字符串、生成代码并在运行时运行它吗?

我正在考虑构建一种可以以不同方式使用的模式和 Web 查询语言:通过 REST 传递,或者在编译时静态构造和验证。这将需要两种操作模式(运行时/编译时)并能够在两种模式下重用部分宏代码。

从我对dotty lang的第一次分析来看,它看起来是可行的;但是,我还没有看到任何使用函数签名解析字符串的方法,如String => Expr[?]. 这可能吗?

此外,这些宏是否有能力改变 scala 代码语义?例如,我想做这样的事情,直接在 scala 代码中:

val preparedQuery = db.query User | name == "Alex" | page 1 limit 10 {
  (asc 1) name,
  address { country, city }
  roles { * }
}

我也应该能够使用字符串执行相同的查询:

val preparedQuery = db.parseQuery(" <the same query> ")
4

0 回答 0