[英]Is there a non-covariant `Type[T]`?
假設我正在嘗試為為用戶定義類型注冊反序列化器的庫函數編寫類型提示:用戶應提供類型T以及函數decode: str -> T 。 我能想到用 python 的 PEP-484 類型提示寫這個的最自然的方法是: from typing import Callable, Type, TypeVar ...
[英]Is there a non-covariant `Type[T]`?
假設我正在嘗試為為用戶定義類型注冊反序列化器的庫函數編寫類型提示:用戶應提供類型T以及函數decode: str -> T 。 我能想到用 python 的 PEP-484 類型提示寫這個的最自然的方法是: from typing import Callable, Type, TypeVar ...
[英]Mypy: how to specify list (or sequence) of mixed types?
這里有一些代碼: import typing class A: def f(self): print("A") class B: def f(self): print("B") C = typing.Union[A,B] Sequence_C = ...
[英]Invariant Generics don't seem working correctly
我已經閱讀了一些關於 Java 中的Covariance 、 Contravariance和Invariance的文章,但我對它們感到困惑。 我正在使用Java 11,並且我有一個類層次結構A => B => C (意味着C是B和A的子類型,而B是A的子類型)和類Container : ...
[英]How to analyze generic lifetime when it is relevant to variance
0 // code snippet 1 1 2 struct MutStr<'a >{ 3 s: &'a mut &'a str, 4 } 5 6 fn main() { 7 let mut s: &'static str = " ...
[英]Is it possible to have an interface for Java arrays?
假設我們想在返回數組的接口中有一個方法,如下所示:interface A { B[] findAllB(); } 但是 arrays 是非常低級的並且是明確實施的。 它們的實現是最終的,不能改變,就像最終的 class 一樣。 如果此接口中的返回類型已經是數組,則無法返回除數組以外的任何 ...
[英]Difference between Variance, Covariance, Contravariance and Bivariance in TypeScript
您能否使用小而簡單的 TypeScript 示例解釋什么是方差、協方差、逆變和雙方差? [持續更新] 有用的鏈接: Oleg Valter的另一個與該主題相關的好答案 Titian-Cernicova-Dragomir對*-riance 的很好解釋 斯蒂芬博耶博客 Scala 文檔- 用例子很好 ...
[英]Rust function pointer Contravariant
我很難理解 Rust 中的逆變性。 具體來說: 然而,同樣的邏輯不適用於 arguments。 考慮嘗試滿足: fn handle_animal(Animal); 和fn handle_animal(Cat); 第一個 function 可以接受 Dogs,但第二個 function 絕對不能。 協 ...
[英]Intuitively explain why `List` is covariant but `Array` is invariant?
從List[+T]我了解到狗列表也是與直覺完全一致的動物列表。 來自def:: [B >: A](elem: B): List[B]我知道我可以將動物( B ,不太具體)添加到狗列表( A ,更具體)並會得到一個列表的動物。 這也符合直覺。 所以基本上List是好的。 從Array[T]我了 ...
[英]How to implement usage site variance in implicits?
對原始問題的大量修改:現在我預先呈現整個代碼,而不顯示解釋我動機的變體。 為混亂道歉。 我需要一個簡單的類型 class 在類型的成員類型之一上實現投影 - 出於本示例的目的,讓它成為一個簡單的轉換: 在上面的例子中,很明顯投影應該是遞歸的, Subject子類聲明它們自己的規則。 顯然,我希望投 ...
[英]Variance/Covariance generics in Kotlin
有一個密封類 Result,它被參數化為兩種類型 - 成功結果(T)和錯誤類型(R)。 它由兩個類繼承: 一個。 成功 - 數據 class,在構造函數中接受 object T 灣。 錯誤 - 數據 class,在構造函數中接受 object R 我需要創建一個 function,它返回結果 ob ...
[英]Is this a valid example of Class invariances using php 7 asserts?
我試圖更好地理解 Liskov 原則使用的類不變性。 我知道像 D這樣的一些語言對 invariant 有本機支持,但是,在 PHP 中使用斷言我嘗試結合魔術方法和斷言: 我可以使用 assert 來創建合約嗎? BadPerson 是 Liskov 在繼承上違反類不變性的有效例子嗎 ...
[英]Unable to hold generic interface implementations in list c#
如何使列表包含通用接口的所有不同實現? 例如 我想把所有的捕手放在一個類似的列表中, 我知道在 c#(協方差、逆變和不變性)中處理通用修飾符是一件很困難的事情,但無法讓它工作。 嘗試:在中添加“out” 但給出編譯時錯誤: “類型參數 'T' 必須在 'ICatcher.Catch(T)' 上逆變 ...
[英]Scala type variance
我有以下代碼 class Person class Warrior extends Person trait Commander[A] { def giveOrder(to: A) def delegate(to: Commander[A]) } val warCommander: ...
[英]Getting around invariant result type in State
我想定義一個State是建立一個特質的具體亞型,按decodeFoo : 這不會編譯,因為State在cat中定義為type State[S, A]並且編譯器響應: 我可以通過將decodeBar和decodeBaz的定義擴展為State[Seq[Byte], Foo]類型來解決 ...
[英]Array<Number>: get and set Int values without casting
我正在構建一個Matrix類,並希望能夠將Number存儲在二維數組中。 這不起作用,因為Array<Number>和Array<Int>是不變的。 我可以通過使用Array<Array<out Number>>來使它工作,但Matrix ...
[英]Scala - covariant type in mutable collections
我是Scala世界的新手,現在我正在閱讀稱為“ Scala in Action”(由Nilanjan Raychaudhuri撰寫)的書,即第97頁上的“可變對象需要不變”部分,而我不理解以下內容:直接取自上述書籍。 假設ListBuffer是協變的,並且下面的代碼段可以正常工作而沒有任 ...
[英]Why can find `Functor` instance for Tree but not for Branch or Leaf?
我有以下Functor定義: 對於: 為什么編譯器會抱怨: 所以我必須創建一個智能構造函數: 在這種情況下,什么是智能構造函數? ...
[英]mypy generic subclass leads to incompatible types
我正在玩弄帶有類型提示的幺半群。 為此,我寫道: 在子類中使用 this 時,例如 我收到error: Argument 1 of "append" incompatible with supertype "Monoid" 。 由於List是Monoid的適當子類,我希望它能夠輸入。 我究竟 ...
[英]Why are all invariant generic class positions invariant in type parameter lists in Scala?
我對下面的類型檢查器的嚴格性感到有點困惑 - 似乎Inv[T]的不變T位置在Variantish的參數列表中也是不變的: scala> class Inv[T] defined class Inv scala> class Variantish[+T, +TVar <: I ...
[英]Covariance confusion. Can't assign tuples of implemented interfaces to list of tuples
前言:我知道關於協方差和協方差有很多疑問和答案,但我仍然感到困惑,不確定要實施哪種解決方案。 我有兩個接口,它們的實現旨在成對一起使用。 一個提供有關銷售商品的信息,一個提供與語言有關的商品信息。 我無法控制這些接口 : 對於有形的GoodsItem和無形的ServiceI ...