gpt4 book ai didi

字典上的 F# 迭代

转载 作者:行者123 更新时间:2023-12-03 18:35:50 28 4
gpt4 key购买 nike

我刚从 F# 开始,我想遍历字典,获取键和值。

所以在 C# 中,我会说:

IDictionary resultSet = test.GetResults;
foreach (DictionaryEntry de in resultSet)
{
Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
}

我似乎找不到在 F# 中执行此操作的方法(无论如何都不能编译)。

有人可以建议 F# 中的等效代码吗?

干杯,

压碎

最佳答案

你的字典是什么类型的?

如果是非泛型IDictionary正如您的代码片段所建议的那样,然后尝试以下操作(在 F# 中,for 不会隐式插入转换,因此您需要添加 Seq.cast<> 以获得可以轻松使用的类型化集合):

for entry in dict |> Seq.cast<DictionaryEntry> do
// use 'entry.Value' and 'entry.Key' here

如果您使用通用 IDictionary<'K, 'V>那么您不需要调用 Seq.cast (如果您对库有任何控制权,这比上一个选项要好):
for entry in dict do
// use 'entry.Value' and 'entry.Key' here

如果您使用不可变 F# Map<'K, 'V> type (如果您在 F# 中编写函数式代码,这是最好的类型),那么您可以使用 Pavel 的解决方案,也可以使用 forKeyValue 一起循环像这样的事件模式:
for KeyValue(k, v) in dict do
// 'k' is the key, 'v' is the value

在这两种情况下,您都可以使用 for或各种 iter职能。如果您需要执行具有副作用的操作,那么我更喜欢 for循环(这不是我提到这个的第一个答案:-)),因为这是为此目的设计的语言结构。对于功能处理,您可以使用各种功能,如 Seq.filter ETC..

关于字典上的 F# 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3267590/

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