問題タブ [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.

0 投票する
1 に答える
553 参照

scala - マクロ定義の scala quasiquote の型の不一致: "型の不一致; 検出: field.NameType が必要: c.universe.TermName"

長い質問をしましたが、コードが多すぎて整理できないようです。そのため、Scala でのマクロの使用に関して私が直面している小さな特定の問題に焦点を当てるために、この質問を作成しました。

次のコード スニペットを検討してください。

fieldsは、このコードのケース クラスのプライマリ コンストラクターのパラメーターのリストにすぎないことに注意してください。私が混乱しているのは quasiquote の結果ですq"$decoded -> t.$name"。これは正確にはどういう意味ですか?そして、それはどのタイプを持っているべきですか?次のようなコンパイル エラーが発生します。

誰でもこのエラーを説明できますか? ありがとう。

0 投票する
1 に答える
383 参照

scala - java Beanクラス作成時のscalaマクロ不明な型エラー

scala 型から java 型へのエンコード ジェネレーターとして使用する次のコード スニペットを作成しました。

これを使用しようとすると、マクロプロジェクトのコンパイル時に問題なくコンパイルされます。ライブラリ プロジェクトのコンパイルを使用すると、例外がスローされます。

ここで立ち往生しており、コードに問題が見つかりません。

Scala のバージョンは 2.11.1 です。

0 投票する
0 に答える
145 参照

scala - quasiquote を使用してプライマリ コンストラクタ パラメータを抽出するにはどうすればよいですか

私は現在使用しています:

と の両方を抽出classDefparamssます。とにかく、これが冗長ではないということはありますか? paramssおそらく、パターンマッチングから抽出したものclassDef: ClassDef?

0 投票する
2 に答える
176 参照

scala - マクロを使用してワイルドカード バインディング パターンを生成する

Scala では、次の変数引数でパターン マッチングが可能ですunapplySeq

マクロでそのようなパターンを生成したい。どうすればいいですか?当然のことですが、うまくいきません。

ただし、パターンから実際の型を抽出し、それを使用qしてパターンを再作成することは可能です。

しかし、これはハックすぎるので、やりたくありません。

0 投票する
1 に答える
280 参照

scala - Scala Quasiquote リフティング

Quasiquotes の Scala ドキュメントでは、Liftingを説明するときにこれについて言及しています。

リフティングと unquote スプライシングを組み合わせることもできます。

コード例で、リフティングと unquote スプライシングの実装は具体的にどこにありますか?

0 投票する
1 に答える
843 参照

scala - Scala quasiquote 連結

私は scala マクロを初めて使用し、最初のマクロを作成するために数日を費やしました。準引用符の連結に問題があります。

ケース句のリストがあります。次のようにしましょう。

そして、それから部分関数を構築する必要があります。問題は、それらを最終的な準引用符に貼り付ける方法がわからないことです。ドキュメントには、次のようなことを行う必要があると書かれています。

しかし、そうするとうまくいきません。

そのようなリストから PartialFunction を構築する方法はありますか?

助けてくれてありがとう。