scala-macros

    0热度

    1回答

    所以我有一个扩展方法应扩展为宏的方法。我遇到的问题是如何在宏实现调用中包含扩展方法的接收方? implicit class ExtensionTest(xs: List[Int]) { def foo(fun: Int => Int)(implicit ord: Ordering[Int]): List[Int] = macro ExtensionTest.fooImpl //

    1热度

    1回答

    下应该显示的问题: class Container[A](val xs: List[A]) { def foo(fun: A => A)(implicit ord: Ordering[A]): List[A] = macro ContainerMacros.fooImpl // how to pass `xs`? } object ContainerMacros {

    1热度

    1回答

    我需要生成: case class Foo(param: Bar = BarEnum.SomeCaseObject) 但这代码: val term = TermName("BarEnum.SomeCaseObject") showCode(q"""case class Foo(val param : Bar = ${term})""") 输出参数默认由反引号所包围,不编译: case c

    1热度

    1回答

    我正在使用macroparadise在我的项目中生成方法和案例类(宏本身在我的核心文件中使用它们的单独项目中定义)。 所有内容都按预期编译并运行,但Eclipse无法解析由我的宏生成的变量和方法。但是,当我关闭并重新打开Eclipse时,它可以完美地识别所有内容;我可以将鼠标悬停在类和方法上并获取正确的信息。但是,只要我改变任何东西,甚至关闭并重新打开引用generate方法的文件,Eclipse

    3热度

    1回答

    我想使用scalameta注释宏在Scala中自动生成REST API模型。具体地,给出: @Resource case class User( @get id : Int, @get @post @patch name : String, @get @post email : String, registeredOn : Long ) 我要生成:

    3热度

    1回答

    我使用Scalameta(v1.8.0)注释到DEF声明: trait MyTrait { @MyDeclDef def f2(): Int } 定义只是返回输入注解类,因为这: import scala.meta._ class MyDeclDef extends scala.annotation.StaticAnnotation { inline def

    -1热度

    1回答

    我有一个对象 object Helper{ val fieldName = "fooBar } 这对于一个字段提供的名称。 和壳体类 case class BarBaz(fieldOne:Int, fieldTwo:String) 但不是fieldTwo,我想是指Helper.fieldname为案件类的参数名称。 这怎么能在斯卡拉完成?也许通过宏?还是有更简单的可能性? 也就是说 c

    2热度

    1回答

    在被称为scala(2.11)宏的方法中,有没有一种方法可以通过编程来确定Type是否为case class? 对我通过工作方法的API归结为: def typeIsCaseClass(c: Context)(targetType: c.universe.Type): Boolean = { // targetType "is case class?" } 我愿意改变API如果需要

    0热度

    1回答

    我正在使用来自Spotify的Scio库的宏注释。我想定义String类型的变量和注释是这样的: val schemaString = """schema here""" @BigQueryType.fromSchema(outputString) class BigQuery 然而,这并不编译,如果我直接注释String,它的工作原理: @BigQueryType.fromSchema("

    1热度

    1回答

    我有一个宏注释{类型T}: import language.experimental.macros import reflect.macros.whitebox.Context class annot extends StaticAnnotation { def macroTransform(annottees: Any*): Any = macro annot.impl }