gpt4 book ai didi

casting - 是否有像 Seq.cast 这样具有类型推断功能的 F# 转换函数?

转载 作者:行者123 更新时间:2023-12-01 23:22:43 27 4
gpt4 key购买 nike

所以我有一些 COM 类型,它们的名称很难记住、又长又笨重,所以如果可以避免的话,我宁愿在从对象进行转换时不必键入它们。使用 Seq.cast 它将推断所需的类型并根据需要进行强制转换。

这是一个用 int 代替的简化版本:

> let o = 1 :> obj;;
val o : obj = 1

> let inc x = x+1;;
val inc : int -> int

> inc o;;

inc o;;
----^

stdin(15,5): error FS0001: This expression was expected to have type
int
but here has type
obj

好吧,有道理。所以我们转换它:

> inc (o :?> int);;
val it : int = 2

但是,如果我使用 Seq.cast 对其进行转换,则不需要显式编写类型:

> inc ([o] |> Seq.cast |> Seq.head);;
val it : int = 2

有没有像下面的 cast 一样工作的函数?

> inc (o |> cast);;
val it : int = 2

是否有像 Seq.cast 这样具有类型推断功能的 F# cast 函数?

最佳答案

您可以使用“unbox”和“box”运算符来利用类型推断

inc (unbox o)

关于casting - 是否有像 Seq.cast 这样具有类型推断功能的 F# 转换函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21162862/

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