簡體   English   中英

ReasonML 從單個 switch 語句返回各種類型的方法

[英]ReasonML way of returning various types from a single switch statement

我有預定義的類型,

type objA = {name: string}
type objB = {age: int}

我想要一個變體類型,

type test = 
| Atype(objA)
| Btype(objB)

並最終使用模式匹配來正確返回每種類型所包含的值。

let testVariant = {name: "helloworld"}
switch(testVariant: test){
| Atype(v) => v
| Btype(v) => v
}

但由於 Atype 和 Btype 內部的變體值不同,這是不可能的。 我的問題是,如何使用模式匹配有條件地返回一些不同類型的數據。

你可以通過使用 GADT 來實現這一點(為了更好地理解閱讀這個Sketch )。

type objA = {name: string};
type objB = {age: int};

type test('a) =
  | Atype(objA): test(string)
  | Btype(objB): test(int);

let testVariant: type a. test(a) => a = {
  fun 
  | Atype(v) => v.name
  | Btype(v) => v.age
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM