問題タブ [scala-quasiquotes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - マクロ定義の scala quasiquote の型の不一致: "型の不一致; 検出: field.NameType が必要: c.universe.TermName"
長い質問をしましたが、コードが多すぎて整理できないようです。そのため、Scala でのマクロの使用に関して私が直面している小さな特定の問題に焦点を当てるために、この質問を作成しました。
次のコード スニペットを検討してください。
fields
は、このコードのケース クラスのプライマリ コンストラクターのパラメーターのリストにすぎないことに注意してください。私が混乱しているのは quasiquote の結果ですq"$decoded -> t.$name"
。これは正確にはどういう意味ですか?そして、それはどのタイプを持っているべきですか?次のようなコンパイル エラーが発生します。
誰でもこのエラーを説明できますか? ありがとう。
scala - java Beanクラス作成時のscalaマクロ不明な型エラー
scala 型から java 型へのエンコード ジェネレーターとして使用する次のコード スニペットを作成しました。
これを使用しようとすると、マクロプロジェクトのコンパイル時に問題なくコンパイルされます。ライブラリ プロジェクトのコンパイルを使用すると、例外がスローされます。
ここで立ち往生しており、コードに問題が見つかりません。
Scala のバージョンは 2.11.1 です。
scala - quasiquote を使用してプライマリ コンストラクタ パラメータを抽出するにはどうすればよいですか
私は現在使用しています:
と の両方を抽出classDef
しparamss
ます。とにかく、これが冗長ではないということはありますか? paramss
おそらく、パターンマッチングから抽出したものclassDef: ClassDef
?
scala - マクロを使用してワイルドカード バインディング パターンを生成する
Scala では、次の変数引数でパターン マッチングが可能ですunapplySeq
。
マクロでそのようなパターンを生成したい。どうすればいいですか?当然のことですが、うまくいきません。
ただし、パターンから実際の型を抽出し、それを使用q
してパターンを再作成することは可能です。
しかし、これはハックすぎるので、やりたくありません。
scala - Scala Quasiquote リフティング
Quasiquotes の Scala ドキュメントでは、Liftingを説明するときにこれについて言及しています。
リフティングと unquote スプライシングを組み合わせることもできます。
コード例で、リフティングと unquote スプライシングの実装は具体的にどこにありますか?
scala - Scala quasiquote 連結
私は scala マクロを初めて使用し、最初のマクロを作成するために数日を費やしました。準引用符の連結に問題があります。
ケース句のリストがあります。次のようにしましょう。
そして、それから部分関数を構築する必要があります。問題は、それらを最終的な準引用符に貼り付ける方法がわからないことです。ドキュメントには、次のようなことを行う必要があると書かれています。
しかし、そうするとうまくいきません。
そのようなリストから PartialFunction を構築する方法はありますか?
助けてくれてありがとう。