[英]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.