問題タブ [invariance]

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

c# - Covariance、Contravariance、Invariance についてすべて読みましたが、コードの設計方法がわかりません。

これを投稿する前に、合理的と思われる限り、検索して読んだり勉強したりしました。同様の質問を見つけましたが、ほとんどの投稿は実際には、 「基本型のリスト」を必要とする関数呼び出しに「派生型のリスト」を渡すことに関連しています。動物の例に感謝することができ、勉強した後はよりよく理解できたように感じます.

そうは言っても、特定のユースケースで解決する方法はまだわかりません。コレクション内の「TestInterface の GenericClass」のインスタンスを集約する必要があります。タスクを達成するための最善の方法と思われるものについて、最善の努力の下にコピーして貼り付けました。

上記のコードは、次のコンパイル エラーで失敗します。

エラー CS1503: 引数 1: 'Covariance.GenericClass' から 'Covariance.GenericClass' に変換できません

エラー CS1503: 引数 1: 'Covariance.GenericClass' から 'Covariance.GenericClass' に変換できません

ヘルプ/ガイダンスまたは関連リンクは大歓迎です。繰り返しますが、これが重複した質問である場合はお詫び申し上げます。ありがとう!

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

scala - Scalaの型パラメータリストですべての不変ジェネリッククラス位置が不変なのはなぜですか?

以下のタイプチェッカーの厳密さに少し困惑しています — の不変T位置は、のパラメータリストInv[T]内でも不変のようです:Variantish

バリアント型は、通常、不変の引数リストの位置のように見える場所で発生する可能性があります。たとえば、オブジェクトで保護された可視性があります。

そして、以下は同じようにタイプセーフであるようです:

上記のチェックはそれほど厳密にする必要がありますか?