問題タブ [scala-2.13]

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 に答える
73 参照

scala - scala shapeless では、別のメソッド内で Record.updateWith を使用する方法は?

私がオンラインで読んだことから、形のない Record.updateWith は、レコード エントリの値と型の両方を更新する唯一の方法のようです。だから私はそれを試してみました:

出来た!出力は ですが123 :: Abc :: HNil、別の問題が発生します。この関数を別の関数内で呼び出すことはできません。つまり、スコープ内で型クラスを使用できません。

最新のコンパイラ (2.13.4) では、次のエラー情報が表示されました。

それにもかかわらず、lemma1この状態を完全に修飾します。だから私の質問は:

  • updateWithの型クラス サモナーにを使用するように指示するにはどうすればよいlemma1ですか? (マクロで書いてあります)

  • これが不可能な場合、メソッドで適切な更新を実装するための他のオプションは何ですか?

助けてくれてどうもありがとう

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

scala - シェイプレスを使用してコンパイル時にクラスの名前を文字列リテラルとして取得する方法は?

これは次の質問です。

shapelessを使用してコンパイル時にケースクラスフィールドの名前を文字列/シンボルとして取得する方法は?

製品タイプを変換できる再帰コンバーターを書きたいとします。

ただし、各ケース クラス フィールド (a、b) をキーとして使用する上記の質問とは異なり、各クラス名または型/型コンストラクター名を直接使用したいと考えています。したがって、この積の型はコンパイル時に Record になります。

(おそらく十分なユースケースではありませんが、アイデアは得られました)

この重要なステップの 1 つは、リフレクションを使用してコンパイル時に各クラスの名前を取得し、それらをシングルトン型またはシェイプレス ウィットネスに変換することです。この機能はすでにどこかで提供されているのだろうか?それとも、それを実現するために絶対にホワイトボックス マクロが必要ですか?