gpt4 book ai didi

F# 提供向下转换类型作为函数参数

转载 作者:行者123 更新时间:2023-12-01 14:45:08 24 4
gpt4 key购买 nike

我正在与一些 C# 库进行一些交互,并且需要对对象进行一些转换。我认为可以通过将向下转换的类型作为参数传递来解决一些重复的代码。

// transform exceptions into Option type
let tryFn fn =
try Some(fn()) with ex -> None

let tryCastString (o: obj) = tryFn (fun () -> o :?> string)
let tryCastUInt64 (o: obj) = tryFn (fun () -> o :?> uint64)

// I would like to do something like the following
let tryCast (o: obj) (t: type) = tryFn (fun () -> o :?> t)

最佳答案

使用类型参数:

let tryCast<'R> (o: obj) = tryFn (fun () -> o :?> 'R)

这具有额外的优势,即类型推断可以在许多情况下为您推断出该类型,这是一个简单的示例:
let x: int64 option = tryCast "4"

这里不需要指定类型,因为编译器知道 xoption<int64> 类型.

关于F# 提供向下转换类型作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41508756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com