scala-quasiquotes

    0

    1答えて

    これは私が欲しいものです: scala> var x:Int = 10 x: Int = 10 scala> var y:Int = 20 y: Int = 20 scala> val ret = q"return $x>$y" ret: universe.Return = return 10.$greater(20) scala> val result1 = toolbox.c

    0

    1答えて

    クラスを解析してCSV文字列に変換するメソッド 'toCSV'を挿入したいと思います。 配列[文字列]:ヘッダ 配列[配列[任意]:フィールド マイマクロ: class model extends scala.annotation.StaticAnnotation { inline def apply(defn: Any): Any = meta { defn match {

    3

    1答えて

    これは私が直面している問題の単純化されたバージョンですが、根本的な問題は残ります。 マクロを呼び出した後、私は動的にケースクラスを生成したい。私はマクロ呼び出しなどからパラメータを取得することができます。私が抱えている問題は、quasiquotes内で文字列変数を使用しようとしています。私は本質的に次のようにしたい: def expand_impl(c: Context)(annottees: c

    0

    1答えて

    しようquasiquotesを「反射ツールボックス起因未解決遊離型に失敗しました」プロデュースの結果[A]():@Andreasジムハルトマンによって示唆されるよう scala.tools.reflect.ToolBoxError: reflective toolbox failed due to unresolved free type variables: T defined by apply

    2

    1答えて

    コンパニオンオブジェクトにメソッドを追加するケースクラスの簡単なマクロ注釈を作成しようとしています。新しいメソッドは、注釈付きのケースクラスの型パラメータを考慮する必要があるということです。 ここで私は package my.macros import org.scalatest._ class DefaultApplyTest extends FlatSpec with Matchers

    25

    1答えて

    この質問は、私のprevious questionと同じです(different contextで遭遇した問題です)。 私はquasiquotesなしでかなり簡単に関数リテラルのパターンマッチをすることができます。このように動作します import scala.reflect.macros.Context import scala.language.experimental.macros o

    1

    1答えて

    私はマクロを持っており、そのマクロの一部は、あるメソッドへのすべての呼び出しを何か他のものに置き換えるものです。これを達成するために、私はTransformerを使用し、transformメソッドを入力したすべてのTreeをクォンコネートと照合しようとします。私はそれを以下のように書くと、うまくいくようです。 package mypackage object myobject { i

    1

    1答えて

    ケースクラス値を受け取り、指定された位置でケースクラスパラメータの値を返す関数に対してTreeを生成しようとしています。これはプライベートパラメータの値を抽出するのに便利です。 import reflect.runtime.currentMirror import scala.reflect.runtime.universe._ import scala.tools.refle

    1

    1答えて

    残念ながら準クォートへの挿入値、最も直感的な方法、 Error:(16, 36) Don't know how to unquote here val tree = q"""println("Hello $world")""" ^ で val world = "Earth" val tree = q"""println("Hello $world")""" 結果quas

    1

    1答えて

    JSONを一致するケースクラスに解析するマクロを書きました。 def parse(jsonTree: JsValue): BaseType = macro parserImpl def parserImpl(c: blackbox.Context)(jsonTree: c.Tree) = { import c.universe._ val q"$json" = jsonTr