問題タブ [generic-derivation]

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 投票する
0 に答える
64 参照

scala - 封印された特性をキー タイプとしてマップをシリアル化できない

このタイプのフォーマットを指定できないようです:

封印されたトレイトとサブタイプのシリアル化、および Foo 型の通常の Play JSON フォーマット用。

しかし、私はこの問題を抱えています:

play-json-derived-codecs lib が Baz タイプのフォーマットを提供し、それで十分だと思いました。Foo が次のように変更された場合

すべてが良いです。

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

scala - 派生または既存の暗黙的な値からインスタンスを提供するための Scala 型クラス

私は Scala で汎用プログラミングを始めており、サードパーティのシリアル化 (circe、upickle など) またはスキーマ (tapir など) に変換できる柔軟なビルド可能なスキーマ タイプ (ADT の一般的な記述) を設計しようとしています。 ) クラスのインスタンスを入力します。製品と副産物のスキーマを構築する場合、サブコンポーネントのスキーマを解決できる必要があります。

これを実現したい方法は、型クラスを使用することです。型クラスは、を解決するか、既存の暗黙的なインスタンスを解決することProviderによって、特定の型のインスタンスを「提供」します。Deriver派生プロバイダーの優先順位を下げることで、派生よりもインスタンスを優先する必要があります。

以下は、より単純なケースに適用された私のソリューションのバージョンです:NamesFor[T]タイプ T の抽出されたフィールド名を含むインスタンスを生成します。

次の 2 つの方法でインスタンスを派生させることができます。

NamesFor[T]1: 既存のインスタンスの暗黙のプロバイダー

NamesFor[T]2: fromの暗黙の派生元T

しかし、スコープ内にNamesFor[T]暗黙的なインスタンスを持たないプロバイダーを解決しようとすると失敗します。NamesFor[T]つまり、provideDerivation次の方法でインスタンスを解決できません。

これをすべて機能させる方法について何か考えはありますか?