以下是来自Macros 的引述:三年多前 Scala 3 的计划: 例如,可以定义一个宏注解@json,将 JSON 序列化器添加到一个类型。 知道如何/如果这在 Scala 3 中实际上可行吗? 更一般地说,Scala 3 中是否有任何东西可以提供“宏注释”功能? 以下是来自Macro Annot ...
以下是来自Macros 的引述:三年多前 Scala 3 的计划: 例如,可以定义一个宏注解@json,将 JSON 序列化器添加到一个类型。 知道如何/如果这在 Scala 3 中实际上可行吗? 更一般地说,Scala 3 中是否有任何东西可以提供“宏注释”功能? 以下是来自Macro Annot ...
我正在编写一个宏,可以在编译期间记录一条短消息,使用 scala 2.13 的模式匹配和常量类型功能: 在测试的时候,我发现直接调用宏大部分时间都是有效的: (这会生成正确的编译消息): ...但如果是隐式宏模式( https://docs.scala-lang.org/overviews/m ...
我有以下宏,它正在为源 class 的给定访问器构造一些字段 class: 使用示例: 问题是weakTypeOf[D]返回Seq而不是所需的Seq[Int] 。 所以我需要在宏中传递复杂的完整类型,如Map[String,Int]或List[Option[SomeClass]] ,所以我可以用准 ...
问题: 我想使用 scala 宏将带注释的 class 设为另一个 class 的子类 我有什么: 字段包装器:class Field(fieldType: DbModelFieldType, fieldName: String) 一个抽象的 class(所有带注释的类的基础 class):ab ...
我正在尝试创建一个只能应用于某种类型的注释宏。 当我运行测试时,仅将注释应用于顶级对象时,会看到“找不到类型”错误。 我的宏代码: 我的测试代码: 我的测试日志是: 我的调试打印告诉我,每个测试中提取的父类型都是相同的,但是由于某种原因,顶级对象无法解析TypeN ...
考虑基于宏观斯卡拉注释如@memoise从macmemo 。 批注需要两个参数:最大缓存大小和生存时间,例如 假设您要创建一个与@memoize(maxSize = Int.MaxValue, expiresAfter = 100 days)等效的@cacheall注释,以减少样板并进 ...
我编写了一个宏注释处理器,该处理器生成的所有方法与声明案例类所获得的方法相同,但是提供了散列约束。 这有点棘手,但总的来说,我对结果感到非常满意。 但是,我看到我尚未解决的围绕apply方法的某些行为。 以前,当Foo类是case类或具有手动定义的apply方法时,我可以编写类似foo ...
我使用cats-tagless lib创建了一个简单的trait : 但是当我尝试编译它时,出现了一个错误: 我还将addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.1" cross CrossVersion.full ...
我试图使用宏注释来注释类的构造函数值。 假设实现了一个名为@identity的宏注释,并在类A的类定义中使用如下: 当只是注释foobar一切都编译得很好。 但是,当注释foo我得到以下编译时错误: 没有伴侣的顶级类只能扩展为同名类或同名同伴中的块 有人可以详细说明这个错 ...
我尝试按照文档中的描述实现Scala宏注释示例。 我设法在使用它们的实际项目之前编译宏注释,即@compileTimeOnly("enable macro paradise to expand macro annotations")不会被触发,这意味着宏注释在其使用之前被编译。 到现在为止还 ...
我有一个宏注释,用于将隐式类型类注入到伴随方法中。 大多数时候它按预期工作,但是当我使用类型约束表示法时它会中断: 此错误已在 SO 上描述并报告为错误。 问题是:不再维护宏(v1),所以我不能指望这会被修复。 所以我想知道的是:我可以在宏中自己解决这个问题吗? 对 AST 的这种更改是 ...
当我运行以下命令时: 我得到scala.meta.Lit.type不接受参数val x = q“ 1” scalameta_2.11:1.8.0 天堂_2.11.8:3.0.0-M7 我正在尝试使用一些基本的宏示例,特别是在此处找到的“ Hello”示例: htt ...
我正在与如下所示的外部Java API进行交互: 基本上,Java API公开了一堆.setXXXX方法,这些方法返回void并进行设置。 我无法控制这些外部POJO。 因此,我想编写一个流畅的build Scala宏,该宏检查对象并为每个返回this的void setXXXX( ...
我想基于一些文件生成scala类。 文件的放置无关紧要(可以是资源文件夹,也可以将文件放置在我的Scala源文件附近)。 执行scala宏后,如何读取它们? (我使用StaticAnnotation的内联def apply(defn:Any):任何方法) 当我尝试使用资源时,找不 ...
我正在尝试在scala IDE上的项目上工作,但是在scala IDE上却遇到了构建问题。 在sbt上,项目构建良好。 我使用了eclipse sbt插件,并将项目导入了scala IDE。 存在构建错误,这使该想法几乎毫无用处。 错误之一是Compiler plugin parad ...
我的问题是我生成的类的成员没有被识别为已实现。 这是为Scala 2.10 / 2.11 / 2.12构建的,默认值为2.11。 使用宏天堂2.10。 这样做的目的是将某些特征标记为可冻结,并为每个采用scala.util.Try的实现类生成一个实现类。 scala.util.Try为 ...
我刚刚更新到scala meta 2.0.0-M1和最新的scala 2.12.3,现在宏不再编译了。 我做的唯一改变是将元版本从1.8.0更改为2.0.0-M1。 错误:新式(“内联”)宏需要scala.meta 有人知道是否有快速的解决方法吗? 我希望开始玩一些语义改进。 ...
我正在使用macroparadise在我的项目中生成方法和case类(宏本身是在与使用它们的核心文件不同的项目中定义的)。 一切都可以按预期进行编译和运行,但是Eclipse无法解析由我的宏生成的变量和方法。 但是,当我关闭并重新打开Eclipse时,它可以完美地识别所有内容。 我可以 ...
我正在编写一个SBT插件。 我想使用Circe JSON库,但是它需要Scala 2.10上的Macro Paradise编译器插件。 通常,您将编译器插件添加到build.sbt ,将SBT插件添加到project/plugins.sbt 。 现在,当您构建SBT插件时,其他插件 ...
我想使用scalameta注释宏在Scala中自动生成REST API模型。 具体来说,给出: 我想生成: 我在这里工作: https : //github.com/pathikrit/metarest 具体来说我这样做: 我对以下代码段不满意: 上面的代 ...