scala-macros

    2熱度

    1回答

    我有一個對嵌套函數應用程序進行一些分析的宏。它匹配的應用和檢索的參數類型是這樣的: case q"$f[..$targs](..$args)(...$otherArgs)" => // retrieve the list of all parameter types val paramTpes = f.tpe match { case pmt: PolyType

    0熱度

    1回答

    鑑於以下類型的寫作宏: sealed trait PosIntCheckResult case class LteZero(x: Int) extends PosIntCheckResult case object NotConstant extends PosIntCheckResult 我試圖寫檢查給定Int是宏大於0 import reflect.macros.Context d

    1熱度

    1回答

    我使用宏註釋來檢查類的字段並基於這些字段添加成員。 例如 @AddVal class A(x: Int) 擴展到 class A(x: Int){ val get: Int = x } 提取ValDef後,它tpe領域仍然null所以要獲得類型我有兩個選擇: 1)如果我打電話的ToString的類型樹,我可以看到類型,但現在我已經失去了一些類型安全 2)如果我在類型樹上使用c

    4熱度

    2回答

    我有以下宏: package macros import scala.reflect.macros.blackbox.Context object CompileTimeAssertions { def mustBeCaseClass[T]: Unit = macro CompileTimeAssertionsImpl.mustBeCaseClass[T] } o

    0熱度

    2回答

    Rust's try!宏解開Result s。 Ok值被解包; Err導致封裝方法立即返回Err。這裏實現:https://doc.rust-lang.org/std/macro.try!.html 這大致相當於斯卡拉Option.getOrElse(return None)。 是否有可能在Scala中爲Option s寫等價宏?看來宏需要檢查封閉方法的返回類型是Option。我在這裏找到了一些相

    1熱度

    1回答

    我試圖評估宏中的shapeless.Witness.Aux[T]類型的隱式參數,以便使用單例類型T的值。這是一個小例子: import shapeless.Witness import scala.language.experimental.macros import scala.reflect.macros.blackbox.Context object Macro { def

    2熱度

    1回答

    對於DSL,我想介紹一個基本上調用Vector.fill的擴展方法,例如dup。 import scala.collection.immutable.{IndexedSeq => Vec} implicit final class Dup[A](private val in: A) extends AnyVal { def dup(n: Int): Vec[A] = Vector.f

    1熱度

    1回答

    我有一個宏註釋 class Foo(obj: String) extends StaticAnnotation { def macroTransform(annottees: Any*) = macro MacroImpl.impl } object MacroImpl { def impl(c: Context)(annottees: c.Expr[Any]*): c.

    1熱度

    1回答

    我正在嘗試編寫一個可以使用有關某個類的字段信息來生成模式的宏。例如,假設我有一個名爲SchemaWriter[T]的類型類,我希望使用宏來生成實現。 trait SchemaWriter[T] { def schema: org.bibble.MsonSchema } case class MsonSchema(fields: Seq[MsonType]) case class

    7熱度

    2回答

    我有以下配置: sealed trait Status case object Edited extends Status case object NotEdited extends Status case class Tweet(content:String, status:Status) 我想使用播放JSON格式,所以我想我必須有這樣的事情(我不想做它的同伴對象): trait J