covariance

    3熱度

    1回答

    這是我第一次在這裏發表問題,所以先感謝任何人都會幫助我(也許還有其他人)。 今天我一直不解帶協方差和逆變在C#4,但我實在看不出任何可能性做什麼,我會的。 注:所有這些都是不來解決特定的問題,但我想知道是否有任何合法的方式(全新CO /禁忌方差在C#4),以解決這個問題。 所以,不要弄瘋了... 下面的代碼示例: public interface IBase<in T> { T Get

    3熱度

    2回答

    從Wikipedia: 協變:從更寬的(雙)轉化成更窄(浮點)。 contravariant:從較窄(浮動)轉換爲較寬(雙)。 在.NET中,委託具有協方差,因爲它允許派生類型委託的指定的返回類型是其持有的基準的方法的返回類型。 除了一個代表具有逆變因爲它允許派生類型的代理的指定的參數(參數)要傳遞到它持有到基準的方法的參數的類型。 有了這兩個定義,因爲它們與代表有關,它們不應該都是協方差?在均爲

    4熱度

    1回答

    對我的Scala的類型系統的更混亂的一個方面是理解協方差,逆變,類型限制等 我想創建一個通用的Repository特徵,可以通過擴展Page特徵的類的伴隨對象對象進行擴展。這個想法是,伴侶對象將負責創建新的實例等。如果這些頁面實例在一段時間內未被訪問,則需要對其進行清理。因此,基礎Repository特徵將把它們註冊到可以在後臺主角色線程中檢查的存儲庫列表中。 下面是代碼的簡化版本。在致電regi

    6熱度

    1回答

    如何SEQ [+ A]可以以如果A在逆變位置發生協變: def :+ (elem: A) : Seq[A] ? 據我所知,一個方法參數類型是逆變位置。我錯過了什麼?

    6熱度

    2回答

    我試圖通過LISREL按以下格式在純文本寫出來的方差 - 協方差矩陣閱讀載體,空格分隔的文件: 0.23675E+01 0.86752E+00 0.28675E+01 -0.36190E+00 -0.36190E+00 0.25381E+01 -0.32571E+00 -0.32571E+00 0.84425E+00 0.25598E+01 -0.37680E+00 -0.37680E+00

    10熱度

    1回答

    我想,「類型差異註釋」(+和-)不能應用於「類型成員」。爲了解釋給我自己,我認爲以下example abstract class Box {type T; val element: T} 現在,如果我想創建一流StringBox我不得不延長Box: class StringBox extends Box { type T = String; override val element = ""} 所

    1熱度

    1回答

    比方說,我想有類似以下內容: abstract class PDF[T, S <: PDF[T, _]] { def fit(obs: Seq[T], weights: Seq[Double]): S } class PDFGaussian(val mu: Double, val Sigma: Double) extends PDF[Double, PDFGaussian] {

    1熱度

    2回答

    首先,我想指出,我已經有一個工作解決方案,但我正在嘗試查看是否有方法使代碼更清晰並且不那麼繁瑣。 這是我的情況。我實際上已經簡化了情況,並創建了一個假的例子來說明清楚。我只是要展示一個具體的例子,展示我已經完成了什麼,它的工作原理。 假設我們有這些類: public abstract class Shape{ //...elided... } public class Square : Shap

    0熱度

    1回答

    我有以下的複雜的繼承層次: I1<I3> A1 : C1, I2 C2 : A1, I3 C3 : A2<C2>, I4 A2<C2> : I5, I1<C2> 以圖片形式: 寫作: I1<I3> i = new C3(); ...導致編譯錯誤「無法轉換源類型...到目標類型...「。 爲什麼?

    31熱度

    3回答

    這是什麼問題? interface IRepository<out T> where T : IBusinessEntity { IQueryable<T> GetAll(); void Save(T t); void Delete(T t); } 它說: 無效方差:類型參數 'T' 必須是 'MyNamespace.IRepository.Delete(T)