discriminated-union

    1熱度

    2回答

    通用TryValue類型的語法是什麼,它可以返回值'a或錯誤'b? type TryValue = | Value of 'a | Error of 'b 如果錯誤是一個字符串,那麼它的罰款: type 'a TryValue = | Value of 'a | Error of string 我想定義一個tryRun函數,它接受一個錯誤的創造者,一

    3熱度

    1回答

    讓我們有幾種類型的二進制節點,其他類型的節點之間的樹的類型定義,即 type Tree = | BinaryNodeA of Tree * Tree | BinaryNodeB of Tree * Tree | [Other stuff...] 我要操縱這棵樹使用遞歸函數,例如,可以交換任何類型的二進制節點的子節點(通過構建新節點)。引起我瘋狂的問題是:如何匹配所有BinaryNode,

    5熱度

    2回答

    如何訪問受歧視的會員的指定字段? 例子: type Point = | Point of x : int * y : int let p = Point(3, 1) // how to access x-value or y-value of p here?

    3熱度

    3回答

    如果我有多個值共用一個孩子(Apple和MoreApples都有型Apple)可識別聯合... type Apples = | GrannySmith | Gala type Fruit = | Apple of Apples | MoreApples of Apples | Banana let speakFruit = function

    0熱度

    1回答

    托馬斯用戶said in the comment方面: 我覺得「或」(又名識別聯合)和「與」(又名記錄)來模擬世界一個非常強大的功能技巧。有時候,功能/界面也很管用,但如果我傾向於堅持「或」 /「及」盡我所能:-) 想我建模Animal世界(開放的世界假設),我怎麼能通過使用歧視的聯合,記錄和有時函數/接口來做到這一點? 例如,使用animal types,我可以使用歧視聯盟對它們進行分類嗎? t

    0熱度

    1回答

    由於打字稿2.0,你可以使用識別聯合與枚舉作爲判別像這樣: export function getInstance(code: Enum.Type1, someParam: OtherType1): MyReturnType1; export function getInstance(code: Enum.Type2, someParam: OtherType2): MyReturnType2;

    0熱度

    1回答

    遵循SO和其他地方的建議,我嘗試使用接口來實現多態,如下面的簡化示例所示。 type IFace = // abstract methods abstract member foo: int -> int type X(i: int) = // some code interface IFace with member this.foo j

    1熱度

    1回答

    爲了調試的目的,我需要更多的浮點數詳細信息,而不是printfn "%A"給我的所有測試代碼都是一般化的。所以我想我box和匹配的類型來獲得有意義的輸出。 但是,類型可以是選項類型或Result<_, _>類型(成功/失敗)。這些類型的唯一模式匹配,當你把他們當作歧視工會,但如果我型式試驗他們,他們不會被擊中: // Illustrative example of what I'm trying

    4熱度

    3回答

    我想寫一些數字代碼,可以使用標量或向量(在這種情況下,分別來自DiffSharp D和DV類型)。有時候,我希望能夠爲使用,所以我已經定義了一個歧視工會爲他們: type IBroadcastable = | Scalar of D | Vect of DV 許多運營商都已經重載這兩種類型的,所以使用它們IBroadcastable我寫的代碼添加像這樣的聯盟: static

    4熱度

    2回答

    什麼是親的和使用的反對的兩種 type Complex = { real: float; imag: float; } 或 type Complex = Complex of real: float * imag: float 我在可讀性特別感興趣,並在處理不同的情況。 在較小的程度上,性能。