types - 创建具有 3 种不同原始类型的可区分联合类型列表
问题描述
所以我试图创建一个有区别的联合类型的列表,例如;
type ColType = Int of int | Float of float | String of string
然后插入到一个列表中,比如
let addToList (list : ColType list) (col : ColType) =
let list' = list @[col]
list'
但是我不确定如何初始化 coltype 值,因为我只获得诸如 int -> coltype 等值。
我试过这个功能
let createColType x =
if x.GetType() = int then
Int x
else if x.GetType() = float then
Float x
else if x.GetType() = string then
String x
else
String x
这显然不起作用,因为它会返回不同的值,那么你将如何解决这个问题?
解决方案
用于match
检查多个选项并:?
匹配类型:
let createColType x =
match box x with
| :? int as i -> ColType.I i
| :? float as f -> ColType.F f
| :? string as s -> ColType.S s
|_-> failwithf "Type not supported %A" <| x.GetType().FullName
createColType 1 |> printfn "%A" // shows: I 1
createColType 2. |> printfn "%A" // shows: F 2.0
createColType "3" |> printfn "%A" // shows: S "3"
推荐阅读
- azure-application-insights - Azure 应用程序洞察——基于 ResultCode 的可用性百分比
- javascript - 如何从 jquery 的列表中删除元素“this”?
- php - 正则表达式 - PHP - 匹配多级 URL 路径,如果开头后跟某个路径或没有别的
- python - 在 Python 中记录未知异常
- swiftui - SwiftUI - 当手指移动一点时让 LongPressGesture 保持不变?
- python - 如何创建一个以点为起点的 pathlib 相对路径?
- redux-form - React-admin:如何实现自动保存/后台保存功能?
- javascript - 如何过滤对象数组并检查特定键是否在数组中具有值
- python-3.x - 尝试在没有成功的情况下用 Python 编写和打开 PDF
- javascript - 无法弄清楚为什么列表过滤器无法正常工作