contravariance

    3熱度

    1回答

    下面是使用泛型 class Program { static void Main(string[] args) { ICovariant<Apple> alCov = new Covariant<Apple>(); ICovariant<Fruite> fCov = alCov; IContravariant<Apple

    2熱度

    1回答

    以下是一段我的代碼: public interface IA<in TInput> { void Method(IB<TInput> entities); } public interface IB<in T> { } 我想不通,爲什麼我獲得以下編譯錯誤: 「參數,必須輸入安全無效方差:類型參數| TInput |必須在contravariantly有效的「IB <在T>」

    1熱度

    1回答

    我在閱讀Scala中的編程,我想清除一些關於編譯器推斷位置是否定的,中性的或肯定的規則以及確切定義爲位置的規則。 我知道這個問題已經在這裏問了很多,但是閱讀這些答案讓我更困惑。 因此,從書中的例子,並改變它有點讓我可以更容易地表達我的問題。 abstract class Cat[-T, +U] { def meow[W](par1: T, par2: Cat[U,T], par3: Do

    2熱度

    2回答

    以下面簡化的C++類層次結構爲例。我想要完成的是Service提供了一種虛擬方法來保存任意的對象。但是Service的每個子類,例如BoxService應該只能保存Box個對象。 由於這樣的事實:C++不支持方法參數的協方差,我不能簡單地聲明的保存方法BoxService.h,如: void save(Box box); 我的問題是,有沒有什麼最佳設計模式或最佳實踐爲問題?或者,如果到達的Mo

    7熱度

    3回答

    我很少與F#這個鬥爭時下,但是然後再次類型繼承是不太常見的F#,所以也許我只是幸運。或者我錯過了明顯的。通常,當編譯器抱怨不知道某個類型時,我會顛倒管道或組合操作數的順序,我就完成了。 基本上,給定一個函數調用,作爲g(f x),它也可以作爲x |> f |> g或(f >> g) x。但今天它不... 這裏是我的意思凌亂驗證的概念: module Exc = open System

    2熱度

    2回答

    abstract class Bhanu[-A] { val m:List[A] } 給 error: contravariant type A occurs in covariant position in type => List[A] of value m abstract class Bhanu[-A] { val m:List[A] } 而 abstract clas

    0熱度

    1回答

    我有一個ModelDecorator助手。我希望它有下列公共API class ModelDecorator<T>{ public static <T> ModelDecorator<T> create(Class<T> clazz); public <SUPER> T from(SUPER fromInstance); } 因此,考慮到類A,B延伸的,可以這樣使用: A

    2熱度

    1回答

    我試圖讓Hasql對「select ... where in」查詢的列表進行編碼。如果我使用從contravariant-extras開始的contramany,但是我在運行時遇到語法錯誤,則會進行類型檢查。 import qualified Database.Encoders as E import Contravariant.Extras getTeamMembership :: Que

    -2熱度

    1回答

    我最近讀到的協方差和逆變 - 下面一點的代碼示例: public class BaseClass{ public int x = 1; public static void print(BaseClass objClass) { Console.WriteLine(objClass.GetType().Name + " " + objClass.x);

    0熱度

    1回答

    我想知道真實世界的場景,我們使用逆變和協方差與program.I看到各種博客,但我仍然困惑我可以實現的地方。