タグ付けされた質問 「scala-macros」

1
QuasiquoteでShapelessを使用する方法?
withのShapeless内部からマクロを呼び出そうとしていますが、取得したいものが取得できません。quasiquoteScala 私のマクロはエラーを返しませんが、展開Witness(fieldName)しませんWitness.Lt[String] val implicits = schema.fields.map { field => val fieldName:String = field.name val fieldType = TypeName(field.valueType.fullName) val in = TermName("implicitField"+fieldName) val tn = TermName(fieldName) val cc = TermName("cc") q"""implicit val $in = Field.apply[$className,$fieldType](Witness($fieldName), ($cc: $className) => $cc.$tn)""" } これが私のField定義です: sealed abstract class Field[CC, FieldName] { val fieldName: String type …

1
マクロから匿名クラスのメソッドを持つ構造型を取得する
いくつかの型のメンバーまたはメソッドで匿名クラスを定義し、それらのメソッドなどで構造型として静的に型指定されたクラスのインスタンスを作成するマクロを作成するとします。これは、2.10のマクロシステムで可能です。 0、そして型メンバー部分は非常に簡単です: object MacroExample extends ReflectionUtils { import scala.language.experimental.macros import scala.reflect.macros.Context def foo(name: String): Any = macro foo_impl def foo_impl(c: Context)(name: c.Expr[String]) = { import c.universe._ val Literal(Constant(lit: String)) = name.tree val anon = newTypeName(c.fresh) c.Expr(Block( ClassDef( Modifiers(Flag.FINAL), anon, Nil, Template( Nil, emptyValDef, List( constructor(c.universe), TypeDef(Modifiers(), newTypeName(lit), Nil, TypeTree(typeOf[Int])) ) …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.