gpt4 book ai didi

f# - 你如何在 F# 中使用(从键中获取值,添加项目)哈希表

转载 作者:行者123 更新时间:2023-12-04 16:56:35 25 4
gpt4 key购买 nike

我想知道如何使用 System.Collections.Hashtable在 F# 中。它是 Hashtable 的原因是因为我引用了 C# 程序集。

我将如何调用以下方法?
- 添加
- 从 key 中获取值(value)

我无法在 Google 中找到任何关于此的有用信息。

最佳答案

正如马克指出的那样,您可以使用 Hashtable直接从 F# 键入(就像任何其他 .NET 类型一样)。在 F# 中访问索引器的语法略有不同:

open System.Collections 

// 'new' is optional, but I would use it here
let ht = new Hashtable()
// Adding element can be done using the C#-like syntax
ht.Add(1, "One")
// To call the indexer, you would use similar syntax as in C#
// with the exception that there needst to be a '.' (dot)
let sObj = ht.[1]

由于 Hashtable 不是通用的,您可能希望将对象转换回字符串。为此,您可以使用 :?>向下转换运算符,或者您可以使用 unbox关键字并提供类型注释以指定您希望获得的类型作为结果:
let s = (sObj :?> string)
let (s:string) = unbox sObj

如果您可以控制使用的类型,那么我建议您使用 Dictionary<int, string>而不是 Hashtable .这与 C# 完全兼容,您无需进行强制转换。如果您从 F# 返回此结果,您也可以使用标准 F# map并将其上传至 IDictionary<_,_>在将其传递给 C# 之前:
let map = Map.empty |> Map.add 1 "one"
let res = map :> IDictionary<_, _>

这样,C# 用户会看到熟悉的类型,但您可以按照通常的函数风格编写代码。

关于f# - 你如何在 F# 中使用(从键中获取值,添加项目)哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3032298/

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