subtyping

    6熱度

    1回答

    爲什麼這個合法的TypeScript? var x: number = 5 var y: Object = x 當然,一個數字不是Object。有人可能會懷疑x被隱式強制(自動盒裝)的一個對象,但沒有: if (!(y instanceof Object)) { console.log(typeof y) } 打印 number 對於記錄:在打字稿 $ tsc --ver

    6熱度

    1回答

    常識意味着子類型應該與返回類型協變,但相對於參數類型相反。因此,下面應該被拒絕,因爲嚴格的協變參數類型的E.f的: interface C { f (o: C): void } interface D extends C { g(): void // give D an extra service } class E implements C { // i

    0熱度

    2回答

    C++允許使用類子類型,這非常方便,因爲您可以使用派生類爲基類實現的函數。 Rust似乎沒有這樣的東西。該功能似乎在某些時候已經可用,但自此之後已被刪除。這在Rust中是不可能的嗎?如果是這樣,有沒有計劃有這個功能? 我想要做的就是確定從另一個結構,這在C++看起來像繼承結構: struct Base { int x; int y; void foo(int x, i

    1熱度

    1回答

    我認爲問題標題有點混亂,但我找不到更準確的說法。 我只需要一個簡單的代碼示例來告訴你我想要什麼。 我: // code 1 interface A { A bla(); } class B implements A { @Override public B bla() { return this; } } class C implements A { @Override public C b

    4熱度

    2回答

    我希望有一個A|B類型爲A|B|C的子類型。這是可能的編碼在斯卡拉?如果是,如何? 我希望我可以編譯下面implicitly[¬¬[IF] <:< T](原代碼here),但它不。有沒有辦法解決這個代碼,以允許子類型? object NUnion{ type ¬¬[A] = ¬[¬[A]] type ¬[A] = A => Nothing trait Disj[T]

    1熱度

    1回答

    在this問題中,未標記的聯合被描述爲子類型的一種形式。 類型類也是子類型的一種形式。 它們在概念上是否相同?呃他們是,我將如何在Haskell中實現這些?

    2熱度

    1回答

    在流動結構亞型可能會導致信息丟失: type O = {x: number, y: number}; type P = {x: number, y: number, z: number} function f(o: O) { return o.x * 2, o.y * 2, o; } const p: P = {x: 2, y: 3, z: 100}; const r =

    2熱度

    2回答

    今天在編程語言類的理論,我們在Java中看到這種行爲: public class Es { ... <Y> Y choose(Y y1, Y y2){ Y returnVal; if("some test"){ returnVal = y1;} else{ returnVal = y2;} return returnVal; }

    -2熱度

    1回答

    我創建了一個擴展到Counter的類,它跟蹤增加和減少。即時通訊設法調用xs,然後返回數字上升或下降的時間總和,這是由xs實例調用的,它的編譯卻失敗了。 class Counter { private var n = 0 def increment() = { n = n + 1 } def decrement() = { n = n - 1 } def g

    3熱度

    1回答

    子類型和包含有什麼區別?包含意味着隱含的強制嗎?