問題タブ [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 - AST が表す値の型をどのように取得しますか?
私は次のように書こうとしています:
value
ASTで表される値の型をキャプチャして、tpe
に割り当てる必要がありU
ます。どうやってこれを行うのですか?
編集:型注釈を付けvalue
て準引用符で照合することは、ここではオプションではありません。ユースケースは、 のような複雑な型を持つ Shapeless の拡張可能なレコードです。また、AST はプログラムによって生成され、リテラルではありません。String with labelled.KeyTag[1, String] :: Long with labelled.KeyTag[three, Long] :: HNil
val ls = (1 ->> "two") :: ("three" ->> 4L) :: HNil
value
scala - 依存型が Scala マクロによって生成されると「機能しない」ように見える
勝手なタイトル失礼します。このようなものに遭遇したことがないので、質問を簡潔に表現する方法が完全にはわかりません。
背景情報:
私は次の特性を持っています。型はShapeless 拡張可能なレコードU
型を保持するためのものです:
ブラックボックス マクロを使用して (この質問の範囲外の理由で)、特性の新しいインスタンスを作成しています。
問題:
問題は、このマクロを使用して の新しいインスタンスを作成するとFlattened
、 のタイプがfields
拡張可能なレコードではなくなることです。
サイドノート:
奇妙なことに、マクロが行うことを手動で行うと、次のように機能します。
この不一致があるのはなぜですか? また、マクロ バージョンを手動バージョンと同じように動作させるにはどうすればよいですか?
scala - マクロで既存のメソッドを使用する
いくつかのメソッドを持ついくつかのクラスがあるとします
someMethod を再利用して ID を上書きする必要があります。理由はわかりませんが、Stackoverflow がスローされます。また、結果を返さずに Clz の params/methods を使用して何かを行う必要があります。
私が試したこと:
Clz で id メソッドを上書きするにはどうすればよいですか?
なぜStackOverflowをスローするのですか??