scala-macro-paradise相关内容

使用 Scala 宏生成方法

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

当宏注释不能在定义它的同一个编译中使用时,这意味着什么?

我对这个声明很好奇: 错误:(3, 18) ...另一种可能是您尝试使用宏定义它的同一个编译运行中的注释) 我尝试谷歌搜索并找到了这个: 最后,请记住,使用宏需要分两步进行编译:首先,编译宏,然后编译使用宏的代码.这是必要的,以便您的宏可以在编译其余代码之前运行.例如,如果您使用 SBT,您可以将 Build.scala 配置为使用两个模块,一个包含您的宏的“宏"模块,以及一个依 ..
发布时间:2021-07-15 21:18:57 其他开发

新式(“内联")宏需要 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 其他开发

为密封类型的所有子类型提供隐式

在我的应用程序中,我有多个案例类和对象,它们是密封特征层次结构的一部分.我将它们用作 Akka 中的消息. 在通过 websocket 发送之前,这些类需要转换为用户友好的形式. 以前我使用大模式匹配在一个地方转换它们,但随着类型数量的增加,我想使用隐式转换: 对象类型{密封性状case 对象 SubType1 扩展类型case 对象 SubType2 扩展类型case 对象 Sub ..

启用宏天堂扩展宏注释

我想在 macro Heaven 中检查一些带有注释的示例,但出现错误,如:这个例子 我已经关联了项目,其他 scala 宏(不带注释)运行良好.我已经包含了库 paradise_2.11.6-2.1.0-M5(在两个项目中也包括 :( ).我想,我不明白 *to enable*. !? bthw, 我在 Eclipse 中使用 Scala IDE. 解决方案 通过启用,我的意思是将 ..
发布时间:2021-07-15 20:58:22 其他开发

SBT 插件:如何将编译器插件添加为不向下游传播的依赖项?

我正在编写 SBT 插件.我想使用 Circe JSON 库,但它需要 Scala 2.10 上的 Macro Paradise 编译器插件. 通常您将编译器插件添加到 build.sbt 并将 SBT 插件添加到 project/plugins.sbt. 现在,当您构建 SBT 插件时,其他插件将成为依赖项,因此您将它们放在 build.sbt 中,然后它们会传播到您使用 SBT 插 ..
发布时间:2021-07-15 19:03:53 其他开发

如何对DefDef进行类型检查

在注解宏中,我正在枚举类的成员,并希望找到的方法的类型. 所以我很高兴地遍历该类的body,并收集了所有的DefDef成员. ...我无法进行类型检查. 对于每个DefDef,我都尝试将其包装在Expr中并使用actualType.我已经尝试过将其复制并移植到一个临时类中(通过准引用).我已经尝试了我能想到的其他所有方法:) 根据所使用的技术,我能得到的最好的结果是NoTy ..
发布时间:2020-05-05 09:10:46 其他开发

使用Scala宏生成方法

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