問題タブ [scala-macro-paradise]
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 - マクロ注釈が IntelliJ14 で機能しない
Scala マクロの使用に問題があります。それは私に言い続けます
マクロ パラダイスを有効にしてマクロ アノテーションを展開する
@compileTimeOnly
書いたメッセージより。マクロ注釈のドキュメントとSBT の例のすべての指示に従いました。
IDE: IntelliJ 14.1
スカラのバージョン: 2.11.7
Project フォルダーの下の Build.scala:
コード:
私は正確に何が欠けていますか?
scala - マクロ注釈を定義しているのと同じコンパイルでマクロ注釈を使用できない場合、それはどういう意味ですか?
私はこの声明に興味があります:
エラー:(3, 18) ...別の可能性は、それを定義する同じコンパイル実行でマクロ注釈を使用しようとすることです)
私はグーグルを試してみましたが、これを見つけました:
最後に、マクロを使用するには、2 つのステップでコンパイルを行う必要があることに注意してください。最初にマクロをコンパイルし、次にマクロが使用されているコードをコンパイルします。これは、残りのコードをコンパイルする前にマクロを実行できるようにするために必要です。たとえば、SBT を使用する場合、マクロを含む「マクロ」モジュールと、「マクロ」モジュールに依存する「ルート」モジュールの 2 つのモジュールを使用するように Build.scala を構成できます。
これは、マクロ定義を使用するために独自の別のモジュールにする必要があるということですか? そして、マクロモジュールが他のモジュールの前にコンパイルされるように、build.scala でどのように定義すればよいでしょうか?
scala - Play フレームワークでマルチプロジェクト ビルドの代わりに jar を使用する Scala マクロ パラダイス
次の質問があります: Play アプリケーションを PlayApp と呼ぶことができます。この Play アプリケーション内でサブプロジェクトを作成しました (playApp 内の dir /MyLib 内)。それを MyLib と呼びましょう。この MyLib プロジェクトには、クラス アノテーションを含むいくつかのマクロがあります。その注釈を PlayApp 内で使用したいと考えています。そこで、この MyLib を作成し、PlayApp を MyLib に依存させました。すべて正常に動作します。これは私の PlayApp/build.sbt です
PlayApp は MyLib に依存する必要があり、別のコンパイル実行でコンパイルする必要があることはわかっています。しかし、このMyLibプロジェクトからjarを作りたいです。だから私はそれをやった
/MyLib に配置し、プロジェクトの /lib 内に jar を配置しました。MyLib.jar からコンパイルされたクラスを確認できますが、コンパイル エラーが発生します。
コンパイルエラー
マクロ アノテーションを展開できませんでした (その最も一般的な理由は、マクロ パラダイス プラグインを有効にする必要があるためです。別の可能性としては、マクロ アノテーションを定義する同じコンパイル実行でマクロ アノテーションを使用しようとしている可能性があります)。
これは私にとっておなじみのエラーです。これは、play が PlayApp と同じコンパイル実行でマクロをコンパイルしようとしているようです。誰かが解決策を知っていますか?
編集:
私はこれを見つけました。使用したいプロジェクト クラスにマクロ アノテーションを二重にインポートしました...通常、ライブラリを jar にパックし、Play アプリの /lib 内に配置し、build.sbt にこのコンパイラ プラグインを追加するだけです。私のエラーはその手順とは関係ありませんでした。このコンパイル エラーが発生する別の可能性があるインポートを再確認してください。
scala - quasioquote から暗黙のパラメーターを使用して関数を呼び出す
何らかの理由で、準引用符から暗黙的なパラメーターを使用して関数を呼び出そうとするたびに、失敗します
Can't unquote x.universe.Tree, consider providing an implicit instance of Liftable[x.universe.Tree]
それの何がいけないの?私はそれをすることが許されていませんか?できないと書いてあるところがどこにも見つからなかった
scala - マクロ展開で注釈にパラメーターを渡す方法
コードを生成するためにマクロ注釈を使用しています。追加の文字列パラメーターに基づいて動作を変更したいと思います。したがって、同じコードに対して異なる結果が生成されます。最も単純な使用法のみをカバーするマクロ アノテーションのガイドに厳密に従いました。
それが私が今マクロセスを使用している方法です。そして、私が達成したいこと:
scala - Scalaでマクロ注釈なしで2次コンストラクタを作成することは可能ですか?
セカンダリ コンストラクターを生成するマクロを作成したいと思います{の本体)。マクロ注釈に頼らずにこれを行うことは可能ですか? (つまりマクロパラダイスプラグイン)
例えば:
このようなもの:
次のようなものと同等である必要があります。
「マクロ」キーワードを使用するだけでは役に立たないようです。これはプレーンな Scala では完全に許可されていませんか? ありがとう。