scalameta相关内容

使用 Scala 宏生成方法

我想在 Scala 2.11+ 中使用注释宏生成方法的别名.我什至不确定这是否可能.如果是,怎么做? 示例 - 鉴于以下情况,我希望注释宏扩展为 类 Socket {@alias(aliases = Seq("!", "ask", "read"))def load(n: Int): Seq[Byte] = {/* impl */}} 我希望上面生成的同义词方法存根如下: 类 Socke ..

在 Scala 2 或 3 中,是否可以在运行时调试隐式解析过程?

在 scala 语言中,隐式解析通常在编译时完成,有时会抛出混淆的错误信息,此类错误的一个著名例子是 shapeless Generic 抛出错误信息,如: 错误:找不到参数编码器的隐式值:CsvEncoder[Foo] (参见 https://books.underscore.io/shapeless-guide/shapeless-guide.html 详情) 这个问题的解决方案是在 ..
发布时间:2021-12-07 13:27:26 其他开发

新式(“内联")宏需要 scala.meta

我刚刚更新到 scala meta 2.0.0-M1 和最新的 scala 2.12.3,现在宏不再编译.我所做的唯一更改是将元版本从 1.8.0 更改为 2.0.0-M1. 错误:新样式(“内联")宏需要 scala.meta 有人知道是否有快速解决方法吗? 我希望开始尝试一些语义改进. 解决方案 scalameta/paradise 目前仅支持 scalameta 1 ..
发布时间:2021-07-15 21:12:50 其他开发

Scala 条件编译

我正在编写一个 Scala 程序,我希望它能够与一个大库的两个版本一起使用. 这个大库的第 2 版对 API 进行了非常轻微的更改(只有一个类构造函数签名有一个额外的参数). //Lib v1class APIClass(a: String, b:Integer){...}//库 v2class APIClass(a: String, b: Integer, c: String){...} ..

如何在Scala中合并多个导入?

假设我有一个图书馆a.com.每次在每个文件中,我都需要导入很多程序包,例如 import a.com._ import a.com.b._ import a.com.c import a.com.Implicits._ 我不想每次都在的每个文件中编写这些代码 另一个项目. 此外,如果我想将a.com更改为a.net,则必须更改每个文件. 反正有防止这种情况发生吗? 解 ..
发布时间:2020-05-23 19:48:31 其他开发

使用Scala宏生成方法

我想使用Scala 2.11+中的注释宏生成方法的别名.我什至不确定那是否有可能.如果是,怎么办? 示例-鉴于此,我希望注释宏扩展为 class Socket { @alias(aliases = Seq("!", "ask", "read")) def load(n: Int): Seq[Byte] = {/* impl */} } 我希望以上代码生成同义词方法存根,如下 ..