scala-macros

    0热度

    1回答

    作为一个概述,我试图动态创建一个Cassandra Java Row的案例类的构造函数,使用反射来查找案例类的主要构造函数,然后尝试从Cassandra Row。 具体来说,我想支持的情况下类的选项为在该行的可选字段,这样 case class Person(name: String, age: Option[Int]) 将成功地填充如果该行有一个名字和年龄,或者只是名称(和填充年龄无)。 为此,

    0热度

    1回答

    我正在使用macros annotation生成代码。我想根据其他字符串参数改变它的行为。所以对于相同的代码它会产生不同的结果。我密切关注仅包含最简单用法的宏注释指南。 @myMacros class MyClass { } 这就是我现在如何使用宏。我想什么来实现: @myMacros(name : String) class MyClass { }

    0热度

    1回答

    的tparam的类型说我有一个宏注释AnnProxy和下面的代码: trait MyTrait { def x: Int } @AnnProxy class MyClass extends MyTrait 我现在需要得到MyTrait的类型,这样我可以代理它的方法。到目前为止,我的代码如下所示: @compileTimeOnly("enable macro paradise

    0热度

    1回答

    我正在写一个宏,需要创建一个重写特性的类,它具有与trait相同的方法/参数,但返回类型不同。 所以说,我们得到: trait MyTrait[T] { def x(t1: T)(t2: T): T } @AnnProxy class MyClass[T] extends MyTrait[T] MyClass的将被改写为: class MyClass[T] { def x

    3热度

    1回答

    我想用宏来消除需要scala来构造一个向下传递的函数对象。这段代码被用在我们系统的内部循环中,我们不希望内部循环只是无休止地分配对象。这给我们造成了性能问题。 我们原来的代码是这样的: dis.withBitLengthLimit(newLimit){... body ...} 而且身体是传递作为一个函数对象的功能。 我遇到的问题是原来的非宏版本引用'this'。我的下面的解决方法是让宏被调用

    1热度

    1回答

    我的一些scala注释宏似乎没有得到扩展,有没有一种方法来检查/记录哪些表达式在编译时传递给我的注释宏,因为现在代码doesn甚至没有编译... def virtualize(tree: Tree): Tree = atPos(tree.pos) { tree match { case x => println("LOG: "+tree) //will only b

    2热度

    1回答

    有没有办法使用宏而不是从内部类的实例获取父类,而不是run-time reflection? 我有这样一组类: trait IdProvider { type IdObject = Id.type case class Id(underlying: Int) } case class SomeEntity(id: SomeEntity.Id) object SomeE

    0热度

    1回答

    因此,可以说我的手之前,有几件事情: case class M[A](val value: A) { def apply(as: M[A]*) = macro applyImpl[A] } def tpAware(implicit ev: Context[A]): M[A] val ma: M[X] = ??? 我想做的事: ma(tpAware) 凡applyImpl

    0热度

    1回答

    我试图用一个静态方法的Java类,T,在宏实现: def macroImpl[T : c.WeakTypeTag](c: Context): c.Expr[ResultType] = { import c.universe._ val tpe = weakTypeOf[T] val someStaticMethod = tpe.declaration(c.univer

    1热度

    1回答

    我想创建一个生成辅助构造函数{的主体)的宏。是否有可能做到这一点,而不诉诸宏观注释? (即宏观天堂插件) 例如: 事情是这样的: class A(a : String, b : String) { def this(s : List[Any]) = macro fromlist } 应相当于是这样的: class A(a : String, b : String) { d